행을 비교하여 두 텍스트를 병합하고 일부 열이 유사한 경우 한 텍스트의 행을 선택합니다.

행을 비교하여 두 텍스트를 병합하고 일부 열이 유사한 경우 한 텍스트의 행을 선택합니다.

두 파일의 일부 데이터 줄이 동일한 것을 측정하는 두 개의 다른 파일이 있습니다. 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이면 !seentrue이므로 이를 증가시키고(true로 만들고) 기본 작업인 을 수행합니다 print.
  • true(두 번째로 동일한 필드가 표시됨) !seen이면 false이고 awk행을 건너뜁니다.

관련 정보