使用 tab 时 sed 出现问题?我应该使用 awk 代替吗?

使用 tab 时 sed 出现问题?我应该使用 awk 代替吗?
cat file.tsv| sed '1icolumn1    column2   column3    column4    ...' > file2.tsv

我正在使用 sed 为.tsv文件添加第一行(标题标签)。标签应该用制表符分隔。我一直在使用文字制表符来分隔字符串。

我多次检查了该字符串。但是我一直遇到标签丢失的问题

例如,而不是获取column1 column2 column3.它常常以column1 column2column3.然后当我尝试修复它时,它最终会变成column1column2 column3.

是否有另一种添加选项卡的方法,例如使用“\t”(我尝试过,但没有成功),这样更不容易出错?会awk是更好的选择吗?

答案1

一种可能的方法是使用printf命令:

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

相关内容