공백으로 구분된 필드가 있는 긴 텍스트 파일이 있습니다.
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
4개의 열이 있고 file2.txt
2개의 열이 있습니다. $1
두 파일( file1.txt
, ) file2.txt
의 첫 번째 열( )을 비교하여 일치하지 않는 파일을 출력하고 싶습니다 file2.txt
.
나는 열심히 노력했다
join -v1 file1.txt file2.txt >output.txt
그러나 출력에는 몇 가지 오류가 있습니다. 모든 awk
/ sed
명령을 높이 평가합니다.
답변1
를 사용하려면 join
FILE1과 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