Text-Processing

將命令放入 awk 以合併不同文件的列

  • July 9, 2019

例如,我有一個 file.txt(每行的列數不同):

1 2 3 4
5 5 6 
7 7 7 7 9 10

我有另一個包含 2 列的文件 (file2.txt)

   a b
   c d
   e f

我使用這個命令:

awk '{print $1,$(cut -f2 file2.txt)}' file.txt > final.txt

我想獲取 file2.txt 的第二列並將其添加到 file1.txt 的第 1 列和第 2 列之間。

前任。結果:

1 d 2 3 4 
5 d 5 6
7 f 7 7 7 9 10

我還想維護 file1.txt 的所有剩餘列

awk

awk '
   FNR==NR{c[NR]=$2}
   FNR!=NR{$1 = $1 OFS c[FNR]; print}
' file2 file

輸出:

1 b 2 3 4 
5 d 5 6 
7 f 7 7 7 9 10

來一點剪切和粘貼怎麼樣?

paste -d" " <(cut -d" " -f1 file1.txt) <(cut -d" " -f2 file2.txt) <(cut -d" " -f2- file1.txt)

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