檢查兩個檔案中的匹配欄位

鑑於這兩個 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 linesfile2 中的每一行檢查陣列中是否存在第二個欄位。如果是,則條件為 True 並且 awk 執行其預設操作,包括列印整行。

如果只需要列印一個欄位,那麼這可能是表示式:

$ awk -F, 'FNR==NR {lines[$2]; next} $2 in lines {print $1}' file1 file2
1
2