如何在文件中的第三个制表符位置之后用逗号替换制表符

如何在文件中的第三个制表符位置之后用逗号替换制表符

我有制表符分隔的文本文件,每个记录的字段数量不相同。但我想在文件中的第三个选项卡之后用逗号替换所有选项卡。

输入

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 命令将从文件中逐行读取。现在它将按原样打印第一个第二个第三个单词,但在第四个单词之后它将用逗号将它们连接起来。

相关内容