답변:
diff를 원하지 않더라도 diff를 사용하는 것은 어떻습니까? 이 시도:
diff --unchanged-group-format='@@ %dn,%df
%<' --old-group-format='' --new-group-format='' \
--changed-group-format='' a.txt b.txt
다음은 샘플 데이터로 얻은 것입니다.
$ cat a.txt
Foo Bar
X
Hello
World
42
$ cat b.txt
Foo Baz
Hello
World
23
$ diff --unchanged-group-format='@@ %dn,%df
%<' --old-group-format='' --new-group-format='' \
--changed-group-format='' a.txt b.txt
@@ 2,3
Hello
World
... --unchanged-group-format="@@ %dn,%df%c'\012'%<" ...
(큰 따옴표에 유의하십시오.)
which diff
이것이 문제인지 확인하는 데 사용 하십시오.
grep -Fxf file1 file2
-F
정규 -x
표현식과 일치 하지 않음 (정규 표현식 제외), 전체 라인 일치 만 -f
의미 , 인수로 명명 된 파일에서 '패턴'(예 : 라인)을 가져옵니다.
-f
및 -F
교환? 적어도 내 grep
버전에서는 그런 식입니다. 와 같은 인수에 file2
입력 을 제공해야하며 작동합니다. -f
cat file1 | grep -Fxf file2
comm
사용할 수 있습니다. man comm
모든 옵션 comm -12 ...
에 대해 두 입력에 모두 존재하는 행만 표시하는 데 사용하려고합니다 .
사람들이 지적했듯이 sort
먼저 입력을 전달해야합니다 .
나는 당신이 원하는 것을하는 단일 명령이 있다고 생각하지 않습니다. 당신의 출력을 결합하는 시도 할 수 diff
와를 grep
하지만. 텍스트 파일은 문자의 아무도를 포함하지 않는 경우 |
, <
, >
다음은 당신에게 어느 정도 유용한 출력을 제공합니다 :
$ diff --side-by-side a b | grep -n -v "[|<>]"
3:Hello Hello
4:World World
diff --width=155 --left-column --side-by-side a b | grep -n -v '|' | sed 's/ *($//'
Dick Grune은 이런 종류의 도구를 작성했습니다.
http://dickgrune.com/Programs/similarity_tester/
다양한 언어의 구문을 구문 분석하는 버전이 있으므로 이름이 바뀐 변수와 같은 것을 변경하지 않은 것으로 볼 수 있습니다.
similarity-tester
데비안과 우분투에서와 같이 패키지됩니다 .
...%df'$'\n''%<'...