タブを使用するとsedに問題がありますか?代わりにawkを使用する必要がありますか?

タブを使用するとsedに問題がありますか?代わりにawkを使用する必要がありますか?
cat file.tsv| sed '1icolumn1    column2   column3    column4    ...' > file2.tsv

私はsedを使用して.tsvファイルに最初の行(タイトルタグ)を追加しています。タグはタブで区切る必要があります。私は文字列を区切るためにリテラルタブを使用してきました。

文字列を何度も確認しました。ところで、タグが欠落している問題が引き続き発生します。

たとえば、.を取得する代わりにcolumn1 column2 column3.で終わる場合が多いですcolumn1 column2column3。その後、修正しようとするとcolumn1column2 column3

「\t」(成功しませんでしたが)を使用するなど、エラーが少ないタブを追加する他の方法はありますか?awkより良い選択ではないでしょうか?

ベストアンサー1

printf1つの可能な方法は、次のコマンドを使用することです。

printf "column1\tcolumn2\tcolumn3"

結果は次のとおりです。

column1 column2 column3    

タブ付き:

printf "column1\tcolumn2\tcolumn3"|od -ax
0000000   c   o   l   u   m   n   1  ht   c   o   l   u   m   n   2  ht
        6f63 756c 6e6d 0931 6f63 756c 6e6d 0932
0000020   c   o   l   u   m   n   3 nul
        6f63 756c 6e6d 0033
0000027

(上記のコードで0x09を確認してください。TABです。)

あなたのコマンドは次のとおりです

cat <(printf "column1\tcolumn2\tcolumn3\n") file.tsv >file2.tsv

おすすめ記事