로부터 diff
맨 :
-b, --ignore-space-change
ignore changes in the amount of white space
-w, --ignore-all-space
ignore all white space
이것으로부터, -b
와 -w
옵션 의 차이점 은 공백 유형 (탭 대 공백)에 -b
민감한 것이 어야합니다 . 그러나 그것은 사실이 아닙니다.
$ diff 1.txt 2.txt
1,3c1,3
< Four spaces, changed to one tab
< Eight Spaces, changed to two tabs
< Four spaces, changed to two spaces
---
> Four spaces, changed to one tab
> Eight Spaces, changed to two tabs
> Four spaces, changed to two spaces
$ diff -b 1.txt 2.txt
$ diff -w 1.txt 2.txt
$
그렇다면 옵션 -b
과 -w
옵션 의 차이점은 무엇 입니까? Kubuntu Linux 13.04에서 diffutils 3.2로 테스트되었습니다.
답변
그 시점에서 매뉴얼 페이지는 명확하지 않지만 정보 페이지는 정교합니다.
1.2 공백 및 탭 간격의 차이 억제
--ignore-tab-expansion
(-E
옵션) 입력시 탭과 공간 사이의 차이를 무시. 탭은 다음 탭 정지까지의 공백 수와 동일한 것으로 간주됩니다 (* note Tabs : :).
--ignore-trailing-space
(-Z
) 옵션은 줄 끝에 공백을 무시합니다.
--ignore-space-change
(-b
) 옵션은보다 강한-E
과
-Z
결합했다. 행 끝의 공백을 무시하고 행 내의 하나 이상의 공백 문자의 다른 모든 시퀀스를 동등한 것으로 간주합니다. 이 옵션을 사용diff
하면 다음 두 줄이 동일하다고 간주합니다. 여기서$
줄 끝을 나타냅니다.Here lyeth muche rychnesse in lytell space. -- John Heywood$ Here lyeth muche rychnesse in lytell space. -- John Heywood $
--ignore-all-space
(-w
) 옵션은 여전히 강하다. 한 줄에는 공백이 있고 다른 줄에는없는 공백이 있어도 차이를 무시합니다. “공백”문자에는 탭, 세로 탭, 용지 공급, 캐리지 리턴 및 공백이 포함됩니다. 일부 로케일은 추가 문자를 공백으로 정의 할 수 있습니다. 이 옵션을 사용diff
하면 다음 두 줄이 동일하다고 간주합니다. 여기서$
줄 끝과^M
캐리지 리턴을 나타냅니다.Here lyeth muche rychnesse in lytell space.-- John Heywood$ He relyeth much erychnes seinly tells pace. --John Heywood ^M$
다른 많은 프로그램에서 줄 바꿈은 공백 문자이지만
diff
줄 중심 프로그램이며 줄 바꿈 문자는 항상 줄을 끝냅니다. 따라서-w
or--ignore-all-space
옵션은 개행 관련 변경을 무시하지 않습니다. 다른 공백 변경 만 무시합니다.
답변
단어 사이에 공백이있는 것 같지만 이것이 내 결과입니다.
diff 1.txt 2.txt
1,2c1,2
< test
< next next
---
> te st
> next next
diff -b 1.txt 2.txt
1c1
< test
---
> te st
-w의 결과는 아무것도 아닙니다.