Text-Processing

如何在文件中的第三個製表符位置後用逗號替換製表符

  • July 20, 2019

我有製表符分隔的文本文件,每條記錄的欄位數都不相同。但是我想在文件中的第三個選項卡之後用逗號替換所有選項卡。

輸入

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

使用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 命令將從文件中逐行讀取。現在它將按原樣列印第一個第二個第三個單詞,但在第四個單詞之後它將用逗號連接它們。

試試這個,

sed -i 's#\t#,#4g' file


100 Apple   COOK    USA,EUROPE,CHINA
200 Micro   BIIL    UK,INDIA
300 Saums   Chul    SK
  • 4g用逗號替換每行中第 4 次出現的製表符。

引用自:https://unix.stackexchange.com/questions/529174