ある列に一致する値があるが、別の列に一致しない値を持つレコードを検索してフィルタリングできますか?

ある列に一致する値があるが、別の列に一致しない値を持つレコードを検索してフィルタリングできますか?

2番目のファイルのレコードをフィルタリングする必要があります。

file1 が次のようになるとします。

0006296 OIL FILTER PH3506   HONEYWELL   Parts and Repair    3101
0015735 OIL FILTER PH2870   HONEYWELL   Parts and Repair    3101

ファイル2は次のようになります。

0006296 OIL FILTER PH3506   HONEYWELL   Parts and Repair    3101
0015735 OIL FILTER PH2870   HONEYWELL   Automotive          4201

一致する最初の列があるが最後の列と一致しない列があるため、ファイル2の2行目をどのようにフィルタリングしますか?

答え1

最初のフィールドと最後のフィールドをキーとして使用すれば十分です。

$ awk 'NR==FNR{a[$1"-"$NF]++;next}$1"-"$NF in a' file1 file2
0006296 OIL FILTER PH3506   HONEYWELL   Parts and Repair    3101

0006296 and 3101これら2つのフィールドを何か(私の場合はダッシュ)で区切って00062963 and 101

関連情報