파일 비교 명령의 경우 diff
텍스트 전용 파일 비교에 필요한 옵션은 무엇입니까?
내 말은 모든 공백, 탭, 개행 문자 등을 무시하고 싶다는 뜻입니다.
다양한 옵션을 시도했지만 원하는 결과를 얻지 못했습니다.
답변1
파일을 전처리한 다음 스트림을 비교할 수 있습니다. 예를 들어 tr
모든 공백과 줄 바꿈을 제거합니다.
diff <( tr -d ' \n' <file1 ) <( tr -d ' \n' <file2)
예제 파일은 a
및 이며, b
텍스트는 공유하지만 공백과 개행 위치는 공유하지 않습니다.
cat a
1
2
3
cat b
1 2 3
diff -sq a b
Files a and b differ
diff -sq <( tr -d ' \n' <a ) <( tr -d ' \n' <b )
Files /dev/fd/63 and /dev/fd/62 are identical
알아채다
these words
사이에는 차이가 없습니다.th esew ord s
- 제거하려는 문자에 특별한 주의를 기울여야 합니다.
diff
출력 파일 이름은 파일 이름이 아닌 스트림 이름입니다.
man tr
탭 등과 같은 특수 문자를 봅니다 . (어쩌면 이 [:space:]
세트가 귀하의 요구에 가장 적합할 수도 있습니다)
답변2
-w
모든 공백(탭, 공백:) 과 공백 개행( ) 을 무시하려면 다음을 수행 -B
하십시오(GNU diff 가정).
$ diff -B -w file1 file2
또는 긴 옵션( 참조 man diff
) 을 사용하여
$ diff --ignore-blank-lines --ignore-all-space file1 file2
이는 본질적으로 전처리된 파일과 동일합니다(그러나 더 설명적인 출력이 있음). 예 tr
:
$ diff <(tr -d '[:space:]' < file1) <(tr -d '[:space:]' < file2)