ファイルがあり、修正された行だけを出力したいです。周囲のコンテキストはなく、diffオフセットマーカーはありません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'
答え1
GNUと共に拡散剤このパッケージは、diff
ファイルbに変更または新しく挿入された行のみを出力します。
diff --unchanged-line-format= --old-line-format= --new-line-format='%L' a b
答え2
オプションをもう1つ追加する必要があります。
grep -vf file1 file2
答え3
awk 'FNR==NR{old[$0];next};!($0 in old)' old.txt new.txt