차이 -b와 -w 차이 차이점 은 공백 유형 (탭 대

로부터 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줄 중심 프로그램이며 줄 바꿈 문자는 항상 줄을 끝냅니다. 따라서 -wor --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의 결과는 아무것도 아닙니다.


답변