• 締切済み

テキスト比較コマンドのdiffについて

unixコマンドにdiffというのがありますね。2つのテキストファイルを比較してその違いを出力するというものです。このコマンドの意味がわからないところがあります。 テキストAとBの比較とは、 1 両者が全く同じかどうかを比較するということなのか、 2 テキストAとBに含まれている各行を取り出してどこかに一致する行があるかどうかをチェックするということなのか 3 あるいはそれ以外の意味 どのようなことを意味するのでしょうか。 1だったら、1行付け加わっただけでそれ以降が同じものであったとしても全部検索対象となり出力されます。 2だったら、何をしたことになるのでしょうか。全く同じ内容で行構成を入れ替えたら検索に引っかからないことになります。 私の希望としては1なのですが、そうするとわけがわかなないぐらい多くの出力結果となることが多いはずです。オプションなどで対応するとは思いますが、基本的には何をするコマンドなのでしょうか。 よろしくお願いします。

みんなの回答

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.4

> file2の3行目のxxxの部分が抽出されると有難いと思っています。 まさしくその希望通りに抽出されますが、もともとの質問の > 1だったら、1行付け加わっただけでそれ以降が同じものであったとしても全部検索対象となり出力されます。 (略) > 私の希望としては1なのです と言ってることが変わってませんか? > 後ろに1000行あったら、1行入れただけで後方全部が対象となるという風に理解しました お願いですから一度試してみてください。 百聞は一見に如かずと言います。その理解が全くの見当違いであることも含めてどのような動作をするのかというのは実際の動作を見てみるのが一番早いのです。 Unix系を入れるのが面倒ならCygwinでも同じことは出来ますから。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

>そうしますと、1行付け加わったらそれ以降全部ということになると思います。 何故そう思うのでしょう?そんなコマンド、役に立ちませんよね。 1行追加しただけなら、「1行追加された」と出ます。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

基本的には何をするためのコマンドかと聞かれると、違うことがわかっているファイルのどこがどう違うのかを調べるコマンドです。ファイルの一部を修正したときの変更記録にも使われます。 内容が同じであれば何も出力されないので、一致検査にも使えますが。

skmsk19410
質問者

お礼

回答、有難うございます。 2つのファイルの各行単位に比較して一致していれば素通り、一致していなければ検出ということでしょうか。そうしますと、1行付け加わったらそれ以降全部ということになると思います。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

実際に「1行だけ違う行」を途中にいくつか入れたファイルを使って比較してみればすぐわかると思うのですが、答えは3です。 もともとは「変更点を出す」ためのコマンドなので、「どう変わったか」を抽出して出力します。

skmsk19410
質問者

お礼

回答有難うございます。 file1 1 aaa 2 bbb 3 ccc 4 ddd file2 1 aaa 2 bbb 3 xxx ←file1にこれが1行加わった。 4 ccc 5 ddd file2の3行目のxxxの部分が抽出されると有難いと思っています。 3,4,5行目について両者を比較すると異なっているのでそれも出てくるということになるかも知れません。後ろに1000行あったら、1行入れただけで後方全部が対象となるという風に理解しましたが。

関連するQ&A