web-dev-qa-db-ja.com

`diff`コマンドが指定された範囲の行からの違いのみを探すようにする

diffコマンドが指定された範囲の行(from行からto行)の違いのみを探すようにする方法はありますか?ファイル全体?同じ行にない2つのファイル内の2つのJavaScript関数の違いを見つけるのに苦労しています。行の範囲を新しいファイルにコピーし、他のファイルにも同じことを行ってから比較することもできますが、特にファイルに多くのテキストが含まれているため、そうするのは面倒です。

私は使ってみました:

diff "code1.js" "code2.js" --suppress-common-lines | tee outputFile

しかし、明らかに、比較したいラインの範囲のみを示しているわけではありません。また、あるファイルで検索する行の範囲を指定し、他のファイルで別の範囲の行を指定できると便利です。

5
JAT86
diff <(sed -n 'S1,S2p' file1) <(sed -n 'S3,S4p' file2)

どこ

  • S1は開始行file1です。
  • S2は終了行file1です。
  • S3は開始行file2です。
  • S4は終了行file2です。

1-4行目をスキップ:

diff <(sed -n '5,10p' file1) <(sed -n '5,10p' file2)

$ more file1
1
2
3
4
5
6
7
8
9
10

$ more file2
11
2
3
4
5
65
7
8
9
10

結果

2c2
< 6
---
> 65

-> 1行目の差分をスキップしました.

これにはデスクトップツールを使用した方が簡単な場合があります。 Meld は優れています(AUのトピック: https://askubuntu.com/a/2947/15811 ):

Meldは、開発者向けの視覚的な差分およびマージツールです。 Meldは、ファイル、ディレクトリ、バージョン管理されたプロジェクトの比較に役立ちます。ファイルとディレクトリの両方の2者間および3者間比較を提供し、多くの一般的なバージョン管理システムをサポートしています。

11
Rinzwind