将空格转换为制表符分隔文件

时间:2016-07-18 15:29:02

标签: shell unix awk sed

我有多个制表符分隔的文件,这些文件具有相同的列标题。但是,标题(文件的第一行)由空格而不是制表符分隔。如何将空格转换为制表符分隔文件第一行的制表符?

2 个答案:

答案 0 :(得分:1)

您只能将sed用于一行:

sed -i.bak $'1s/ /\t/g' file.csv

答案 1 :(得分:0)

听起来你可以使用awk:

awk -v OFS='\t' 'NR == 1 { $1 = $1 } 1' file

将第一行$1的第一个字段分配给自身会导致awk重新格式化该行,插入输出字段分隔符OFS(定义为制表符)。 1是最短的 true 条件,因此awk默认为每行{ print }

要覆盖“就地”,请使用临时文件:

awk -v OFS='\t' 'NR == 1 { $1 = $1 } 1' file > tmp && mv tmp file

请注意,这会将任意数量的空格解释为单个字段分隔符。