![행을 비교하여 두 텍스트를 병합하고 일부 열이 유사한 경우 한 텍스트의 행을 선택합니다.](https://linux55.com/image/152481/%ED%96%89%EC%9D%84%20%EB%B9%84%EA%B5%90%ED%95%98%EC%97%AC%20%EB%91%90%20%ED%85%8D%EC%8A%A4%ED%8A%B8%EB%A5%BC%20%EB%B3%91%ED%95%A9%ED%95%98%EA%B3%A0%20%EC%9D%BC%EB%B6%80%20%EC%97%B4%EC%9D%B4%20%EC%9C%A0%EC%82%AC%ED%95%9C%20%EA%B2%BD%EC%9A%B0%20%ED%95%9C%20%ED%85%8D%EC%8A%A4%ED%8A%B8%EC%9D%98%20%ED%96%89%EC%9D%84%20%EC%84%A0%ED%83%9D%ED%95%A9%EB%8B%88%EB%8B%A4..png)
두 파일의 일부 데이터 줄이 동일한 것을 측정하는 두 개의 다른 파일이 있습니다. File1의 줄이 같은 것을 측정하는 출력 줄이 되도록 병합된 출력을 원합니다(file1의 두 번째 줄과 file2의 첫 번째 줄이 같은 것을 측정합니다. 한 줄의 열 1과 열 2 유사성을 원합니다. 파일).
... 파일 1:
1257, OBM , 47, 106, 1330
1257, IRK , 52, 104, 467
....
파일 2:
1257, IRK , 50, 100, 400
1000, CTK , 47, 106, 1330
....
산출:
1257, OBM , 47, 106, 1330
1257, IRK , 52, 104, 467
1000, CTK , 47, 106, 1330
....
답변1
사용 awk
:
awk -F',' '!seen[$1,$2]++' file1 file2
설명하다:
- 처음에는 키 필드가 있는 배열 항목이
$1,$2
할당되지 않았으므로 false입니다. - false이면
!seen
true이므로 이를 증가시키고(true로 만들고) 기본 작업인 을 수행합니다print
. - true(두 번째로 동일한 필드가 표시됨)
!seen
이면 false이고awk
행을 건너뜁니다.