すべての空白と空/空白の行を無視して2つのファイルを比較する必要がありますが、何らかの理由で、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
$
使用 -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
Sedコマンドで空の行と空白を削除するコマンドを支援できます
空行または空白行を削除するには、以下のコマンドを使用します
sed '/^$/d' filename
行の空白を削除するには
sed -r "s/\s+//g" filename
上記のコマンドを実行した後、diff
コマンドを使用して2つのファイルの違いを知ることができます