한 열에는 일치하는 값이 있지만 다른 열에는 일치하지 않는 값이 있는 레코드를 찾고 필터링할 수 있습니까?

한 열에는 일치하는 값이 있지만 다른 열에는 일치하지 않는 값이 있는 레코드를 찾고 필터링할 수 있습니까?

두 번째 파일의 레코드를 필터링해야 합니다.

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의 두 번째 행을 어떻게 필터링합니까?

답변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이 두 필드를 무언가(내 경우 에는 대시)로 구분하여00062963 and 101

관련 정보