모든 공백과 빈 줄을 무시하고 두 파일을 비교해야 하는데 어떤 이유에서인지 diff 옵션이 잘 작동하지 않고 file1에 계속 빈 줄이 표시됩니다...
$ cat file1
2 nodes configured
13 resources configured
$ cat file2
2 nodes configured
23 resources configured
$ diff -ywBEZb -W 200 --suppress-blank-empty --suppress-common-lines file1 file2
13 resources configured | 23 resources configured
<
$ od -bc file1
0000000 062 040 156 157 144 145 163 040 143 157 156 146 151 147 165 162
2 n o d e s c o n f i g u r
0000020 145 144 012 061 063 040 162 145 163 157 165 162 143 145 163 040
e d \n 1 3 r e s o u r c e s
0000040 143 157 156 146 151 147 165 162 145 144 012 012
c o n f i g u r e d \n \n
0000054
$ od -bc file2
0000000 062 040 156 157 144 145 163 040 143 157 156 146 151 147 165 162
2 n o d e s c o n f i g u r
0000020 145 144 012 062 063 040 162 145 163 157 165 162 143 145 163 040
e d \n 2 3 r e s o u r c e s
0000040 143 157 156 146 151 147 165 162 145 144 012
c o n f i g u r e d \n
0000053
$ diff -ywBEZb -W 200 --suppress-blank-empty --suppress-common-lines file1 file2 | od -bc -
0000000 061 063 040 162 145 163 157 165 162 143 145 163 040 143 157 156
1 3 r e s o u r c e s c o n
0000020 146 151 147 165 162 145 144 011 011 011 011 011 011 011 011 011
f i g u r e d \t \t \t \t \t \t \t \t \t
0000040 011 040 040 040 174 011 062 063 040 162 145 163 157 165 162 143
\t | \t 2 3 r e s o u r c
0000060 145 163 040 143 157 156 146 151 147 165 162 145 144 012 011 011
e s c o n f i g u r e d \n \t \t
0000100 011 011 011 011 011 011 011 011 011 011 040 040 040 074 012
\t \t \t \t \t \t \t \t \t \t < \n
0000117
$
답변1
스위치를 사용하십시오 -B
:
-B --ignore-blank-lines Ignore changes whose lines are all blank.
공백을 무시하려면 -b
및 -w
스위치를 사용하십시오.
-b --ignore-space-change Ignore changes in the amount of white space.
-w --ignore-all-space Ignore all white space.
아니면 단순히RTM.
편집하다:
-B
(및 일부 다른 스위치)가 작동하지 않는 것 같기 때문에 diff
(버그로 보고할지 여부에 대한 정보를 찾지 못했습니다) 빈 줄과 공백을 무시하려면 다른 방법을 사용해야 합니다.
나는 다음과 같은 것을 제안하고 싶습니다 :
[my@pc ~]$ cat file1.txt
2 nodes configured
13 resources configured
[my@pc ~]$ cat file2.txt
2 nodes configured
23 resources configured
[my@pc ~]$ diff <(grep -vE '^\s*$' file1.txt) <(grep -vE '^\s*$' file2.txt)
2c2
< 13 resources configured
---
> 23 resources configured
답변2
sed 명령을 사용하여 빈 줄과 공백을 제거할 수 있습니다.
빈 줄이나 빈 줄을 제거하려면 다음 명령을 사용하십시오.
sed '/^$/d' filename
줄에서 공백 제거
sed -r "s/\s+//g" filename
위 명령을 실행한 후 diff
명령을 사용하여 두 파일의 차이점을 알 수 있습니다.