diff
lalu grep
untuk jenis edit yang Anda inginkan.
diff -u A1 A2 | grep -E "^\+"
Pendekatan serupa untuk https://stackoverflow.com/a/15385080/337172 tetapi mudah-mudahan lebih mudah dipahami dan mudah disesuaikan:
diff \
--new-line-format="%L" \
--old-line-format="" \
--unchanged-line-format="" \
A1 A2
Sebagian besar di bawah ini disalin langsung dari jawaban serverfault @TomOnTime di sini. Di bagian bawah adalah upaya yang bekerja pada file yang tidak disortir, tetapi perintah mengurutkan file sebelum memberikan diff sehingga dalam banyak kasus tidak seperti yang diinginkan. Untuk diff yang diformat dengan baik dari file yang tidak disortir, Anda mungkin menganggap jawaban lain lebih berguna (terima kasih kepada @Fritz karena telah menunjukkan hal ini):
Tampilkan baris yang hanya ada di file a:(mis. apa yang dihapus dari a)
comm -23 a b
Tampilkan baris yang hanya ada di file b:(yaitu apa yang ditambahkan ke b)
comm -13 a b
Tampilkan baris yang hanya ada di satu file atau lainnya:(namun tidak keduanya)
comm -3 a b | sed 's/^\t//'
(Peringatan:Jika file a
memiliki baris yang dimulai dengan TAB, itu (TAB pertama) akan dihapus dari keluaran.)
CATATAN:Kedua file harus diurutkan agar "comm" berfungsi dengan benar. Jika belum diurutkan, Anda harus mengurutkannya:
sort <a >a.sorted
sort <b >b.sorted
comm -12 a.sorted b.sorted
Jika file sangat panjang, ini mungkin cukup membebani karena memerlukan salinan tambahan dan karena itu ruang disk dua kali lebih banyak.
Sunting:perhatikan bahwa perintah dapat ditulis lebih ringkas menggunakan substitusi proses (terima kasih kepada @phk atas komentarnya):
comm -12 <(sort < a) <(sort < b)
Anda dapat mencoba ini
diff --changed-group-format='%>' --unchanged-group-format='' A1 A2
Opsi didokumentasikan dalam man diff
:
--GTYPE-group-format=GFMT
format GTYPE input groups with GFMT
dan:
LTYPE is 'old', 'new', or 'unchanged'.
GTYPE is LTYPE or 'changed'.
dan:
GFMT (only) may contain:
%< lines from FILE1
%> lines from FILE2
[...]