두 파일 열 비교

두 파일 열 비교

공백으로 구분된 필드가 있는 긴 텍스트 파일이 있습니다.

cat file1.txt
Id    leng  sal   mon
25671 34343 56565 5565
44888 56565 45554 6868
23343 23423 26226 6224
77765 88688 87464 6848
66776 23343 63463 4534

cat file2.txt
Id    number
25671 34343 
76767 34234 
23343 23423 
66776 23343 

cat output.txt
Id    leng  sal   mon
44888 56565 45554 6868
77765 88688 87464 6848

file1.txt네 개의 열이 있고 file2.txt두 개의 열이 있습니다. $1두 파일( file1.txt, file2.txt)의 첫 번째 열( )을 비교하여 에서 일치하지 않는 파일을 출력하고 싶습니다 file2.txt.

나는 시도했다

join -v1 file1.txt file2.txt >output.txt

그러나 출력에는 몇 가지 오류가 있습니다. 모든 awk/ sed명령을 높이 평가합니다.

답변1

를 사용하려면 joinFILE1과 FILE2가 있는지 확인해야 합니다.정렬됨조인 필드에서.

다음 명령을 사용하면 됩니다.

join -v1 <(sort file1.txt) <(sort file2.txt)

답변2

이와 비슷하지만 헤더 줄은 포함되지 않습니다.

$ awk '{print $1}' file2.txt | grep -vf - file1.txt
44888 56565 45554 6868
77765 88688 87464 6848

참고: 귀하의 설명이 아닌 예제 출력과 일치하도록 이를 조정했습니다. 다른 방법을 원하면 file1과 file2를 전환하면 됩니다.

이를 분석하면 다음과 같습니다.

  • awk에서 필드 1만 인쇄합니다.file2.txt
  • grep -v일치를 반전합니다(일치하지 않는 행을 인쇄합니다).
  • -f -grep파일에서 일치 패턴 목록을 읽도록 지시합니다 . 이 경우 -( STDIN)는awk

관련 정보