• ベストアンサー

diff:各行に行番号も入れる方法

失礼します。 diff の side-by-side形式出力時に、各行に行番号を入れたいんですが、その手法がわかりません。どなたかご存知でしょうか? いま、 diff -b -B -y -W78 --suppress-common-lines file1 file2 hoge           | here gere           | gero こんな感じです。これに行番号を挿入し、 20:hoge          | 20:here 21:gere          | 21:gero みたいにできればと思います。

質問者が選んだベストアンサー

  • ベストアンサー
  • nightowl
  • ベストアンサー率44% (490/1101)
回答No.1

diff 単体では無理だと思います。特に「-y(--side-by-side)」オプション付きでは フォーマット指定ができません。 普通に出力した結果に awk, Perl, Ruby といったスクリプト言語で作った フィルタをかませるのがいいと思います。

no-hdd_no-ip
質問者

お礼

ありがとうございます。おっしゃる通り、perl等の方が柔軟な処理ができそうなので、その方向で考えてみます。 一瞬、cat -n した結果を diff したら、と考えましたが、それをしたら行追加/削除時 diff が行番号を相違点として拾っちゃうので、やっぱボツでした ^^;

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Cのプログラム上でDiffを使いたい

    Visual Studio2005 WindowsXP 上でプログラムを作っています。 使用言語はC言語です。 プログラム上でDiffを使いたいのですが、Cygwin等にあるような Diffを使うことは可能なのでしょうか? やりたいこととしては、 2つのファイルのDiffを行って、 挿入、削除された行の行番号を取得したいと思っています。

  • VBScriptでDIFF作成

    お世話になります 仕事で、VBScriptのコードでUNIXのdiffのようなものが必要なのですが。 といっても、100%同じでなくて構いません。作成できる方お願いします。 (なぜ、cygwinのdiff.exeを使わないの?という質問は無しでお願いします。) 例として、下記のような2つのテキストファイルから結果のようなものを出したいのです。 ファイル1  ファイル2      結果 A1      A1            < B1 B1      A2            > A2 C1      C1            > D2 D1      D2            < D2 D2      D1            > D3 E1      D3             < R1 R1      E1            > K1 R2      K1            < R2         R1 ファイル1とファイル2を交互に上からチェックする仕組みで考えています ファイル1の1行目のA1 と ファイル2の1行目のA1は同じだから表示しません ファイル1の2行目のB1 と同じものはファイル2の2行目以降にないので、< B1 と表示 ファイル2の2行目のA2 と同じものはファイル1の2行目以降にないので、> A2 と表示 ファイル1の3行目のA1 と ファイル2の3行目のC1は同じだから表示しません ファイル1の4行目のD1と同じものはファイル2の5行目なので、その間の行を表示 > D2 と表示 ファイル1は5行目のD2はファイル2の6行目以降にないので < D2 と表示 : Funcion VBS_Diff( Filename1 , Filename2 ) : VBS_Diff=(diffの結果文字列) End Function お手数ですが、挑戦できる方お願いします。

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

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

  • diffコマンドの無視条件指定方法(改行コード, 特定行)

    Unix等のDiffコマンドの結果で、いくつかの条件を無視したいのですが 方法がわかりませんでした。 よろしければどなたか教えていただけないでしょうか。 1.改行コードを無視したい  テキストの内容は同じだけど、改行コードが異なったファイルを扱う場合、すべての行が差分として扱われてしまいます。 改行コードを無視したdiffのとりかたはないでしょうか?  2.特定の行を無視したい  CVSのRCSキーワードが異なる行は無視して差分をとりたいのですが、 上手くいきません。。。-Iオプションで正規表現が指定できるとのことですが、挙動がどうも不明です。  上手くいかない例:diff -I '\$Date' a.c b.c ちなみに試みた環境は、cygwinでdiffは以下のバージョンです。 $ diff -v diff (GNU diffutils) 2.8.7 どちらか片方でもわかるかたいらっしゃいましたら、よろしくお願いいたします。

  • 番号づけする

    文章の各行の左に行番号をつける、というにはどういう英語が 意味が通じ易いでしょうか。 number [動詞: 番号をつける]より Shall we number the line at each of the lines? の場合、動詞の他の意味の「数える」と勘違いするでしょうか? または、下記のような方がわかりやすいでしょうか。 Shall we write the number of lines at each of lines? 他に、こう言う、というのがありましたらお願いいたします。

  • EXCELの行番号、列番号の大きさ!

    EXCELで列番号A、B・・・行番号1、2、3の文字の大きさが、EXCELのファイルによって違います。印刷しようとしても同じ設定なのに若干ずれています。 違うところといえば、その列番号、行番号の文字の大きさです。直すにはどのようにしたらよいのか教えてください!

  • $git diff 差分を表示で何かがへんなんです

    お世話になります。 Gitを勉強していてわからないことがあります。 対象となるファイルの中を書き換えました。 その後、変更されている差分を表示したところよくわからないコードが出てきました。 下記のコードが意味するよくわかりません。私に何を教えてくれているのでしょうか? -1<8D>s<96>ڂ<F0><92>lj<C1><82><B5><82>܂<B5><82><BD><81>B -2<8D>s<96>ڂ<F0><92>lj<C1><82><B5><82>܂<B5><82><BD><81>B 以上、よろしくお願いします。 出力結果 user@user-PC /c/first_git (master) $ git diff diff --git a/README.md b/README.md index 4dfe31a..5f11ae3 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,3 @@ -1<8D>s<96>ڂ<F0><92>lj<C1><82><B5><82>܂<B5><82><BD><81>B -2<8D>s<96>ڂ<F0><92>lj<C1><82><B5><82>܂<B5><82><BD><81>B \ No newline at end of file +1行追加 +2行追加 +3行追加 \ No newline at end of file

  • シェルスクリプトに関する質問 下記の処理を実現する

    下記の処理を実現する方法を教えてください(シェルスクリプト) 【概要】 二つのファイルに記載しているディレクトリ容量を計算して、 違うファイルに出力する方法を教えてください。 ・A.txt [記載内容] /backup1/etc/common,20 /backup1_1/etc/common,40 /backup1_2/etc/common,40 ・B.txt [記載内容] /hoge1/etc/common,20 /hoge1_1/etc/common,35 /hoge1_2/etc/common,44 ●上記ファイルを計算して下記のファイルに出力したいです。 ・AB.txt /hoge1/etc/common,0 /hoge1_1/etc/common,-5 /hoge1_2/etc/common,4 大変申し訳ありませんが宜しくお願い致します。

  • 複数行のセルを行番号を指定してコピーする方法

    こんにちは。 エクセルでこのような住所録を作成致しました。    列番号  A     B      C 行番号 1      山田○子  99*-****  東京都**区~  2      田中*雄   88*-****  東京都**区~ 3      佐藤*代   77*-****  東京都**区~ (以下同様の列続く) この表の中から、例えば1、2、5、9、11の行だけを 抜き出してコピーしたいのですが 今まではCTRLキーで飛び飛びに選択してから、コピーしていました。 もっと手間を掛けずに、行番号を指定入力して一度にコピーできる方法を 探しています。 自分のイメージとしては、複数ページあるファイルをプリンターで印刷する際、ページ番号を指定入力して印刷する時がありますよね、 (例:10ページ中、1.3.5.9.ページを指定して印刷) あのような感じです。 予め住所録を行番号も含めて紙に印刷してあるので、どの行番号のもの印刷したいのか、一覧を出すのは手間が掛かりません。 つたない説明ですが、何か良い方法がありましたら ぜひ教えて下さい。 よろしくお願い致します。

  • Excelの行番号、列番号の表示について

    Excelの行番号と列番号がシートの右側に表示されてしまいます。 行番号1,2,3...の表示がシート右側に、列番号A,B,C...の表示がシートの右側から表示されています。 Excelを起動すると、全てのファイルがこの状態で開きます。 オプションの設定などを確認してみましたが、該当する設定はありませんでした。 通常(シートの左側)の表示に戻したいのですが、方法をご存知の方がいらっしゃいましたら、ご教授願います。