2つのファイルをdiff-edして取得しました
1c1
< 1
---
> 1
両方のファイルには「1」のみが含まれていました。これはどう違いますか?
-u
オプションは人間が読める形式になっている可能性があります。
cp 1 2
);(SO 2を上書き)して、あなたは、彼らが同じであることを確認し、100%のBすることができ
vimdiff file1 file2
?:D
2つのファイルをdiff-edして取得しました
1c1
< 1
---
> 1
両方のファイルには「1」のみが含まれていました。これはどう違いますか?
-u
オプションは人間が読める形式になっている可能性があります。
cp 1 2
);(SO 2を上書き)して、あなたは、彼らが同じであることを確認し、100%のBすることができ
vimdiff file1 file2
?:D
回答:
1行目:a
追加、d
削除、c
変更を表します。元のファイルの行番号はこれらの文字の前に表示され、変更されたファイルの行番号は文字の後に表示されます。
2行目:の行<
はファイル1からのものであり、ファイル2とは異なります。
3行目は仕切りです。
4行目:の行>
はファイル2からのもので、ファイル1とは異なります。
(表示される場合=
、両方のファイルで行が同じであることを意味します)
そして、あなたの問題は空白または人間が読めない他の文字かもしれません:それらも違いを引き起こします。
出力を操作するためのオプションがいくつかあります。
例:
rinzwind @ discworld:〜$ more 1 テスト test2 test3 rinzwind @ discworld:〜$ more 2 テスト test2 test3
コンテキスト形式:
rinzwind @ discworld:〜$ diff -c 1 2 *** 1 2011-08-13 17:05:40.433966684 +0200 --- 2 2011-08-13 17:11:24.369966629 +0200 *************** *** 1,3 **** テスト !test2 test3 --- 1,3 ---- テスト !test2 test3
「!」2つのファイルで対応する行間の変更を表します。「+」は行の追加を表し、空白スペースは変更されていない行を表します。パッチの先頭には、フルパスやタイムスタンプなどのファイル情報があります。各ハンクの先頭には、ファイルの対応する変更に適用される行番号があります。3つのアスタリスクのセットの間に表示される番号範囲は元のファイルに適用され、3つのダッシュのセットは新しいファイルに適用されます。ハンク範囲は、それぞれのファイルの開始行番号と終了行番号を指定します。
統一フォーマットに関するLekensteynのコメントを拡張:
rinzwind @ discworld:〜$ diff -u 1 2 --- 1 2011-08-13 17:05:40.433966684 +0200 +++ 2 2011-08-13 17:11:24.369966629 +0200 @@ -1,3 +1,3 @@ テスト -test2 + test2 test3
形式は、元のファイルの前に「---」が付き、新しいファイルの前に「+++」が付いていることを除いて、コンテキスト形式と同じ2行のヘッダーで始まります。これに続くのは、ファイル内の行の違いを含む1つ以上の変更ハンクです。変更されていないコンテキスト行の前にはスペース文字が、追加行の前にはプラス記号が、削除行の前にはマイナス記号が付いています。
いくつかの便利なオプション:
-b
空白の量の変化を無視します。
-w
すべての空白を無視します。
-B
すべての空白行を無視します。
-y
2列で出力されます。
man diff
; からコピー))
od -x1z
両方のファイルで実行し、od
出力を比較します。ファイル間の隠れた違いを見つける必要があります。
プリントできない文字を含むファイルを比較するときに、od(8進ダンプ)が便利であることがわかります(特に、diffが「バイナリ」であると判断したため、違いがあることだけがわかります)。
次の例では、元のファイルのようなファイルのペアを作成し、元の出力で差分を作成します。次に、いくつかの異なる「od」出力でdiffを実行します。
$ echo 1> 1
$ echo "1"> 2
$ diff 1 2
1c1
< 1
- ---
> 1
$ od -c 1> 1.od
$ od -c 2> 2.od
$ diff 1.od 2.od
1,2c1,2
< 0000000 1 \n
< 0000002
---
> 0000000 1 \n
> 0000003
$ od -Ax -c -t x1 1> 1.od
$ od -Ax -c -t x1 2> 2.od
$ diff 1.od 2.od
1,3c1,3
< 000000 1 \n
< 31 0a
< 000002
---
> 000000 1 \n
> 31 20 0a
> 000003
これが空白文字を見つけるのに役立つかどうかはわかりませんが、diffには便利です:http ://www.gnu.org/software/wdiff/
http://www.gnu.org/software/diffutils/manual/html_node/Detailed-Unified.html#Detailed-Unified
上記のリンクは、より簡潔で明確な説明を提供します。