差分、正しいファイルの変更された行のみを表示


24

私はファイルを持っていますabそしてb、それがクローンされたので、それの変更された行を出力したいと思いますa。変更された行のみ、周囲のコンテキスト、差分オフセットマークはありません。

シェルスクリプトを使用してこれを行うにはどうすればよいですか?(Python / Perl / PHP /なし)

Sedとawkは許容可能なソリューションです。

今のところ、--suppress-common-linesでdiff -yを行い、正規表現の後方参照を使用してsedを実行し、空白の後の正しい部分を取得します。より良い方法があるはずです?

perl(禁止)を使用して、次のようなことをします。

diff -y --suppress-common-lines -W $COLUMNS Eclipse_Preferences_Export_*.epf | perl -pe 's/.*\t|\t(.*)$/\1/g'

回答:


34

GNU diffutilsパッケージを使用diffすると、ファイルbから変更または新規挿入された行のみが出力されます。

diff --unchanged-line-format= --old-line-format= --new-line-format='%L' a b

4
驚くばかり。恥ずべき情報はTexinfoに埋もれており、読んでいたマニュアルページにはヒントがありません
。– Robottinosino

6

もう1つのオプションを追加する必要があります。

grep -vf file1 file2

行を並べ替える必要はありませんが、grepはより多くのメモリを使用し、大きなファイルの場合はクラッシュすると思います。
シュリダールSarnobat

行はどちらか重複している場合は動作しません
Jayen

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.