Linux diff 명령, 개행 문자를 삭제합니까?

Linux diff 명령, 개행 문자를 삭제합니까?

Linux 구현이 diff -w폐기 되었습니까 \n? 이를 확인하기 위해 Linux 시스템에 액세스할 수 없습니다.

답변1

-w깃발방법:

-w --ignore-all-space
    Ignore all white space.

이제 "공백"이 실제로 일반적으로 포함되기 때문에 이는 완전히 명확하지 않습니다 \n. 예를 들어, \sPerl 호환 정규 표현식이나 POSIX의 클래스는 [[:space:]]개행 문자와 일치합니다.

$ printf '\n' | grep -zqP '\s' && echo yes
yes
$ printf '\n' | grep -zq '[[:space:]]' && echo yes
yes

그러나 diff비교하여 작업철사줄은 \n문자로 정의됩니다(실제로는 문자 grep이므로 -z위에서 사용해야 했습니다). 따라서 다른 라인이므로 고려할 diff수 없습니다 . 따라서 아니요, 이 옵션은 줄 바꿈을 삭제하지 않으며 , 빈 줄은 파일이 일치하지 않음을 의미합니다.\n\n-wdiff

$ printf 'foo\nbar\n' > file1
$ printf 'foo\n\nbar\n' > file2
$ diff -wq  file1 file2
Files file1 and file2 differ

diff그러나 행 개수로 인한 변경 사항을 무시 하는 옵션이 있습니다 .

-B --ignore-blank-lines
    Ignore changes whose lines are all blank.

$ diff -sB  file1 file2
Files file1 and file2 are identical

관련 정보