檢查兩個檔案中的匹配欄位
鑑於這兩個 CSV 檔案:
$ cat file1
1,line1
2,line2
3,line3
4,line4
$ cat file2
1,line3
2,line4
3,line5
4,line6
要在 file2
中列印這些行,其第二列也出現在第一個檔案中,我們可以說:
$ awk -F, 'FNR==NR {lines[$2]; next} $2 in lines' file1 file2
1,line3
2,line4
這裡,lines[]
包含一個陣列,當使用每行第二個欄位的內容讀取 file1
時,該陣列將被填充。
然後,條件 $2 in lines
為 file2
中的每一行檢查陣列中是否存在第二個欄位。如果是,則條件為 True 並且 awk
執行其預設操作,包括列印整行。
如果只需要列印一個欄位,那麼這可能是表示式:
$ awk -F, 'FNR==NR {lines[$2]; next} $2 in lines {print $1}' file1 file2
1
2