我有制表符分隔的文本文件,每个记录的字段数量不相同。但我想在文件中的第三个选项卡之后用逗号替换所有选项卡。
输入
100 Apple COOK USA EUROPE CHINA
200 Micro BIIL UK INDIA
300 Saums Chul SK
所需输出:
100 Apple COOK USA,EUROPE,CHINA
200 Micro BIIL UK,INDIA
300 Saums Chul SK
答案1
尝试这个,
sed -i 's#\t#,#4g' file
100 Apple COOK USA,EUROPE,CHINA
200 Micro BIIL UK,INDIA
300 Saums Chul SK
4g
将每行中第四次出现的制表符替换为逗号。
答案2
使用awk
:
awk 'BEGIN{OFS=IFS=" ";}{for(i=5;i<=NF;i++){$4=$4","$i;} print $1,$2,$3,$4}' file
您的案例的输出将是:
100 Apple COOK USA,EUROPE,CHINA
200 Micro BIIL UK,INDIA
300 Saums Chul SK
awk 命令将从文件中逐行读取。现在它将按原样打印第一个第二个第三个单词,但在第四个单词之后它将用逗号将它们连接起来。