다음 데이터가 포함된 두 개의 파일이 있습니다. 두 파일의 차이점이 필요합니다.
나는 그것을 시도했지만 diff
두 파일 모두에 공통 줄도 표시됩니다 (22372 Dec 4 15:36 /opt/apache-tomcat-6.0.36/webapps/new/new.txt)
.
첫 번째 파일: (파일 1에도 여러 데이터가 있습니다)
22677 Dec 4 15:36 /opt/apache-tomcat-6.0.36/webapps/new/abc.txt
22372 Dec 4 15:36 /opt/apache-tomcat-6.0.36/webapps/new/new.txt
두 번째 파일: (파일 2에도 여러 데이터가 있습니다).
22372 Dec 4 15:36 /opt/apache-tomcat-6.0.36/webapps/new/new.txt
22677 Dec 3 15:36 /opt/apache-tomcat-6.0.36/webapps/new/abc.txt
12344 Dec 10 15:36 /opt/apache-tomcat-6.0.36/webapps/abc/.../test.txt
다음 출력이 필요합니다.
22677 Dec 3 15:36 /opt/apache-tomcat-6.0.36/webapps/new/abc.txt
12344 Dec 10 15:36 /opt/apache-tomcat-6.0.36/webapps/abc/.../test.txt
답변1
이것은 통신을 사용할 수 있는 완벽한 기회인 것 같습니다.
GNU coreutils 매뉴얼 페이지(v8.30)에서:
With no options, produce three-column output. Column one contains
lines unique to FILE1, column two contains lines unique to FILE2, and
column three contains lines common to both files.
-1 suppress column 1 (lines unique to FILE1)
-2 suppress column 2 (lines unique to FILE2)
-3 suppress column 3 (lines that appear in both files)
file1
이 정보를 사용하여 두 파일에 있는 줄뿐만 아니라 고유한 줄도 삭제할 수 있습니다 .
$ comm -1 -3 <(sort file1) <(sort file2)
12344 Dec 10 15:36 /opt/apache-tomcat-6.0.36/webapps/abc/.../test.txt
22677 Dec 3 15:36 /opt/apache-tomcat-6.0.36/webapps/new/abc.txt
-1 및 -3은 파일 1에 고유한 모든 줄과 두 파일 모두에 공통된 모든 줄을 삭제합니다.
정렬로 인해 출력 순서가 변경되지만 질문에 따른 고려 사항은 아닌 것 같습니다.
입력이 이미 정렬된 경우 정렬을 건너뛸 수 있습니다.
$ comm -1 -3 file1 file2
답변2
사용diff -u file1 file2 | sed -nr 's/^+([^+].*)/\1/p'
산출:
22677 12월 3일 15:36 /opt/apache-tomcat-6.0.36/webapps/new/abc.txt
12344 12월 10일 15:36 /opt/apache-tomcat-6.0.36/webapps/abc/.. /시험 . txt
그들 사이에 빈 줄이 필요하면 다음을 사용하십시오.
diff -u file1 file2 | sed -nr 's/^+([^+].*)/\1\n/p'
산출:
22677 12월 3일, 15:36 /opt/apache-tomcat-6.0.36/webapps/new/abc.txt
12344 12월 10일, 15:36 /opt/apache-tomcat-6.0.36/webapps/abc/.../test.txt