두 파일 열 비교

두 파일 열 비교

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

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.txt4개의 열이 있고 file2.txt2개의 열이 있습니다. $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파일(이 경우 -( ))에서 일치하는 패턴 목록을 읽도록 지시합니다 .STDINawk

관련 정보