Diberikan dua file, saya ingin menulis skrip shell yang membaca setiap baris dari file1 dan memeriksa apakah ada di file2. Jika suatu baris tidak ditemukan maka harus menghasilkan dua file berbeda dan keluar. File dapat berisi angka kata atau apa pun. Sebagai contoh :
file1:
Hi!
1234
5678
1111
hello
file2:
1111
5678
1234
Hi!
hello
Dalam hal ini dua file harus sama. jika file2 memiliki "halo !!!" alih-alih "halo" maka file berbeda. Saya menggunakan skrip bash. Bagaimana saya bisa melakukan ini. Itu tidak penting bahwa saya perlu melakukannya dalam lingkaran bersarang tetapi itulah yang saya pikir adalah satu-satunya cara. Terima kasih atas bantuan Anda.
sort
tidak peduli tentang konten yang tepat kecuali Anda memberi tahu.--brief
dan tambahkan opsi format, mis-u
.diff
menetapkan status keluarnya untuk menunjukkan apakah file sama atau tidak. Status keluar dapat diakses dalam variabel khusus$?
. Anda dapat memperluas jawaban Ignacio dengan cara ini:sumber
if diff ... >/dev/null
tanpa tanda kurung dan variabel.Menambahkan ini karena saya rasa [[]] && || konstruknya cukup rapi:
sumber
Harus juga berfungsi:
Saya pikir ini karakter yang cukup untuk jawaban ...
sumber
Sementara
diff
jawaban yang sangat bagus, saya mungkin akan menggunakancmp
sebagai gantinya yang khusus untuk melakukan perbandingan byte dengan byte dari dua file.https://linux.die.net/man/1/cmp
Karena itu, ini memiliki bonus tambahan untuk dapat membandingkan file biner.
Saya dituntun untuk percaya bahwa ini lebih cepat daripada menggunakan
diff
walaupun saya belum mengujinya secara pribadi.sumber