Saya awalnya membuat dua file yang berisi daftar URL — saya akan menyebutnya sebagai old
dan new
. Saya ingin membandingkan dua file dan jika ada URL di new
file yang tidak ada dalam old
file, saya ingin ini ditampilkan dalam extra_urls
file.
Sekarang, saya sudah membaca beberapa hal tentang menggunakan diff
perintah tetapi dari apa yang bisa saya katakan, ini juga menganalisis urutan informasi. Saya tidak ingin pesanan memiliki efek pada output. Saya hanya ingin URL tambahan new
dicetak ke extra_urls
file, tidak peduli apa urutannya ditempatkan di salah satu dari dua file lainnya.
Bagaimana saya bisa melakukan ini?
diff
akan melakukan hal yang sama, bukan?diff
akan menunjukkan semua perbedaan.comm
memungkinkan Anda untuk memilih apakah Anda ingin melihat garis-garis dari file 1, file 2, atau yang mereka miliki bersama.bash
sedang dijalankan? Itu mungkin tidak mendukung penggantian proses.Saya hanya akan menggunakan
grep
:Penjelasan
-f
: memberitahugrep
untuk membaca pola pencariannya dari file. Dalam hal iniold
,.-v
: memberitahu grep untuk membalikkan kecocokan, untuk hanya mencetak garis yang tidak cocok.-F
: memberitahu grep untuk mengartikan pola pencariannya sebagai string, bukan ekspresi reguler. Dengan begitu,.
URL akan dicocokkan secara harfiah.Digabungkan, ini membuat
grep
mencetak garis apa punnew
yang tidak ada diold
. Urutan URL dalam file tidak relevan.sumber
-F
untuk pola teks biasaKarena pesanan penting bagi Anda, gunakan
awk
sumber
> extra
menjadi| sort > extra
. atau| sort -u > extra
jika Anda hanya ingin url baru muncul di output satu kali, terlepas berapa kali itu dalam input. Urutan input bertanggung jawab untuk mempengaruhi urutan output kecuali Anda melakukan pekerjaan ekstra di suatu tempat untuk mencegahnya.comm
adalah jawaban terbaik untuk pertanyaan ini, meskipungrep -Fvf
bagus jugaSaya memiliki aplikasi yang disebut berbaur. Ini memungkinkan melihat dua (atau tiga) file, berdampingan, menunjukkan perbedaan dan memungkinkan untuk menyalin selektif dari satu ke yang lain atau menghapus karakter.
Meld dapat diinstal dari terminal dengan
sumber