Bagaimana saya bisa menampilkan perbedaan antara 2 file?

11

File saya terdiri dari yang berikut ini; kurang lebih:

username:username:username:username:username 

Baris di atas berlanjut hingga sekitar 600 karakter.

Saya menggunakan awkperintah untuk menggunakannya sebagai argumen dalam permintaan API / HTTP yang dikirim dari baris perintah.

Saya menggunakan skrip untuk mendapatkan daftar akun pengguna yang 'mengikuti' saya, dan setiap 24 jam atau lebih, membandingkan daftar asli pada hard disk saya dengan daftar nama pengguna yang baru dikeluarkan (dan menyuarakan siapa yang tidak lagi mengikuti saya . Saya harus merangkum logika saya menjadi loop menggunakan bash .. menguji setiap nama pengguna.

Skrip saya saat ini:

user=$(awk -F: '{ print $1 }' FILE)  # Grab $User to use as an argument.  
following=$(exec CURRENT_FOLLOWERS) # Outputs the new file

echo "X amount of users are following you on 78B066B87AF16A412556458AC85EFEF66155"  

          SAVE CURRENT FOLLOWERS TO NEW A FILE.  


if [[ DIFFERENCE IS DETECTED ]] ; then    

          echo -ne "$User NO LONGER FOLLOWING YOU\r"

   else echo -ne "This user is following you still.\r"
fi

Pertanyaanku adalah;
Bagaimana saya bisa menampilkan perbedaan antara 2 file?

Ben
sumber
Anda tahu diffkan?
schaiba
@ schaiba Terima kasih. Baru saja menemukan itu di forum lain, bekerja dengan baik. Saya belum menemukan itu sebelumnya. Saya harap jawaban ini berguna untuk pertanyaan selanjutnya oleh anggota lain.
Ben
@ schaiba mungkin juga menjawabnya. Pastikan untuk menangani diff bekerja pada baris bukan bidang sekalipun.
terdon

Jawaban:

13

Diberikan dua file yang berisi daftar pengguna yang tidak disortir, mis

In file1:
    userD
    user3
    userA
    user1
    userB

dan

In file2:
    user3
    userB
    userX
    user1

lalu untuk mendapatkan daftar pengguna yang sederhana file1tetapi tidak di file2, Anda bisa melakukannya

$ comm -23 <(sort file1) <(sort file2)
userA
userD

dan juga untuk mendapatkan pengguna file2tetapi tidak difile1

$ comm -13 <(sort file1) <(sort file2)
userX

Jika file daftar sudah diurutkan, ini dapat disederhanakan comm -23 file1 file2dan comm -13 file1 file2masing - masing.

Steeldriver
sumber
1
Apakah mungkin untuk digunakan commtanpa penyortiran? File teks saya memiliki nilai-nilai seperti 1, 2, 01, 02, 0000, 0001, 0002, dll Menggunakan sortakan de-semacam order ...
Lanti
6

Perintah terbaik untuk melihat perbedaan dalam isi file adalah

vim -d file1 file2
vipin kumar
sumber
3

diff [options] from-file to-file

diffmembandingkan isi dari dua file dari-file dan ke-file. Anda dapat menentukan -iopsi yang mengabaikan perubahan dalam kasus; pertimbangkan huruf besar dan kecil yang setara.

Untuk informasi lebih lanjut, Anda dapat merujuk tautan ini: http://www.computerhope.com/unix/udiff.htm atau Anda dapat melihat di halaman manual.

Thushi
sumber
2

Anda dapat mencoba jendela yang sama seperti fcperintah dalam perintah Unix dan Linux yaitu diff <file_new> <file_old>.

Garis dengan +++atau ---di depan mereka telah berubah dan satu tanpa +'satau -'sbelum berubah

Baris dengan -tanda dihapus dari file baru namun ada dalam versi lama

Baris dengan +tanda ditambahkan dari dalam file baru namun mereka tidak ada dalam versi file yang lama

Notasi Linux

Penggunaan Linux > dan<

>berarti baris dari file lama <berarti baris dari file baru yang diubah dalam file lama

Abimanyu Aryan
sumber
0

Pergi untuk vimdiff untuk Menampilkan perbedaan antara dua, tiga atau empat versi file yang sama.

SHW
sumber