Shell 将空格转换为制表符分隔文件第一行的制表符
我有多个具有相同列标题的制表符分隔文件。但是,标题(文件的第一行)由空格而不是制表符分隔。如何将以制表符分隔的文件的第一行上的空白转换为制表符 您只能对一行使用Shell 将空格转换为制表符分隔文件第一行的制表符,shell,unix,awk,sed,Shell,Unix,Awk,Sed,我有多个具有相同列标题的制表符分隔文件。但是,标题(文件的第一行)由空格而不是制表符分隔。如何将以制表符分隔的文件的第一行上的空白转换为制表符 您只能对一行使用sed: sed -i.bak $'1s/ /\t/g' file.csv 听起来您可以使用awk: awk -v OFS='\t' 'NR == 1 { $1 = $1 } 1' file 将第一行的第一个字段$1分配给自身会导致awk重新格式化该行,插入输出字段分隔符OFS(定义为制表符)1是最短的真条件,因此awk对每一行执行默
sed
:
sed -i.bak $'1s/ /\t/g' file.csv
听起来您可以使用awk:
awk -v OFS='\t' 'NR == 1 { $1 = $1 } 1' file
将第一行的第一个字段$1
分配给自身会导致awk重新格式化该行,插入输出字段分隔符OFS
(定义为制表符)1
是最短的真条件,因此awk对每一行执行默认值:{print}
要覆盖“就地”,请使用临时文件:
awk -v OFS='\t' 'NR == 1 { $1 = $1 } 1' file > tmp && mv tmp file
请注意,这会将任意数量的空格解释为单个字段分隔符。您熟悉
unexpand
(及其配套的expand
)吗?