Saya ingin mendapatkan (GNU) DIFF untuk mencetak hanya garis yang berbeda dalam satu file. Jadi diberikan
==> diffa.txt <==
line1
line2 - in a only
line3
line4 changed
line5
==> diffb.txt <==
line1
line3
line4 changed in b
line5
line6 in b only
saya ingin diff --someoption diffa.txt diffb.txt
menghasilkan
line2 - in a only
line4 changed
Berikut ini tampak seolah-olah itu harus membantu tetapi agak samar:
--GTYPE-group-format=GFMT
Similar, but format GTYPE input groups with GFMT.
--line-format=LFMT
Similar, but format all input lines with LFMT.
--LTYPE-line-format=LFMT
Similar, but format LTYPE input lines with LFMT.
LTYPE is `old', `new', or `unchanged'.
GTYPE is LTYPE or `changed'.
GFMT may contain:
%< lines from FILE1
%> lines from FILE2
Jawaban:
Tidak yakin
diff
sendiri bisa melakukannya tetapi Anda selalu dapat menggunakan kekuatan utilitas GNU lain untuk membantu Anda.Itu melakukan diff, kemudian memilih hanya baris yang dimulai dengan '-' - yang diubah dan memiliki nilai dari file diffa.txt, kemudian
sed
hapus saja tanda-tanda '-' itu.Sunting: Setelah beberapa percobaan dengan
diff
, sepertinya perintah di bawah ini menghasilkan apa yang Anda inginkan:sumber
--changed-group-format='%<'
yang saya lakukan sekarang ....Metode yang lebih sederhana adalah dengan menggunakan
comm
utilitas linux (Perlu file yang diurutkan untuk input). Itu menulis ke output standar:baris yang unik untuk diffa.txt
baris yang unik untuk diffb.txt
garis yang umum
dan Anda dapat menekan masing-masing dengan parameter 1,2 atau 3 sesuai. Jadi dalam kasus Anda akan terlihat seperti ini:
comm -23 diffa.txt diffb.txt
Ini menekan garis yang unik untuk diffb.txt, garis yang umum dan mencetak garis yang unik hanya untuk diffa.txt
Sumber dari: https://www.tutorialspoint.com/unix_commands/comm.htm
sumber
diff
yang tidak melakukan apa yang saya harapkan. Dan saya percaya itu sudah terinstal baik pada BSD (yaitu Mac OS X) maupun Ubuntu sehingga tidak ada mimpi buruk manajer paket.Saya ingin menyebutkan bahwa
comm
mengharapkan file input yang diurutkan dan dengan demikian melaporkan hasil yang berbeda daridiff
.bersifat universal. Kudos to @vava
sumber