diffを使用してファイルを比較するときは、テキスト以外のすべてを無視しますか?

diffを使用してファイルを比較するときは、テキスト以外のすべてを無視しますか?

ファイル比較コマンドの場合、テキストのみのdiffファイル比較に必要なオプションは何ですか?

私の言葉は、すべてのスペース、タブ、改行文字などを無視したいという意味です。

さまざまなオプションを試しましたが、目的の結果が得られませんでした。

ベストアンサー1

ファイルを前処理してからストリームを比較できます。たとえば、trすべてのスペースと改行を削除します。

diff <( tr -d ' \n' <file1 ) <( tr -d ' \n' <file2)

サンプルファイルはaおよびで、bテキストは共有しますが、スペースと改行位置は共有しません。

cat a
1
2
3

cat b
1 2 3

diff -sq a b
Files a and b differ

diff -sq <( tr -d ' \n' <a ) <( tr -d ' \n' <b )
Files /dev/fd/63 and /dev/fd/62 are identical

気づく

  1. these words間に違いはありません。th esew ord s
  2. 削除したい文字には特別な注意を払う必要があります。
  3. diff出力ファイル名はファイル名ではなくストリーム名です。

man trタブなどの特殊文字を表示します。 (多分この[:space:]セットはあなたの要求に最も適しているかもしれません)

おすすめ記事