Shell-Script

按行合併文件

  • July 12, 2014

是否可以按照使用or的簡單 bash 腳本給出的指令複製File1in的整行?File3``File2``sed``awk

File1: /*two or more columns*/
AC    456324
DC    689712
GH    123677
KL    236587

File2: /*one column*/
AC
DC

File3: 
AC    456324
DC    689712

我實際上是在使用 Python 字典執行此操作,我想知道您是否知道一個簡單的出路。

grep

grep -Ff File2 File1

awk

awk 'NR==FNR {a[$1]++;next} a[$1]' File2 File1

您可以通過join將兩個文件中的特定列在兩個文件中具有相同值的位置連接它們來組合來自兩個文件的行。請注意,輸入文件需要按該列中的值排序。

join File1 File2

如果文件沒有排序,在 bash/ksh93/zsh 中:

join <(sort File1) <(sort File2)

這裡要加入的欄位是包含AC,DC等的欄位。下面是一個例子,如果要加入的欄位是第 3File1列,第 2 列在File2

join -1 3 -2 2 <(sort -k3,3 File1) <(sort -k 2,2 File2)

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