ファイルa
とb
があり、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'
GNU diffutilsパッケージのdiff
を使用すると、変更または新しく挿入されたファイルbの行のみが出力されます。
diff --unchanged-line-format= --old-line-format= --new-line-format='%L' a b
オプションをもう1つ追加する必要があります。
grep -vf file1 file2
awk 'FNR==NR{old[$0];next};!($0 in old)' old.txt new.txt