GNU/Linux >> Belajar Linux >  >> Linux

Membandingkan dua daftar yang tidak disortir di linux, mencantumkan yang unik di file kedua

Anda perlu menggunakan comm :

comm -13 first.txt second.txt

akan melakukan pekerjaan itu.

ps. urutan file pertama dan kedua dalam masalah baris perintah.

Anda juga mungkin perlu mengurutkan file sebelum:

comm -13 <(sort first.txt) <(sort second.txt)

jika file numerik tambahkan -n opsi untuk sort .


Ini seharusnya berhasil

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

Sepertinya sort -n (numerik) tidak dapat bekerja dengan comm, yang menggunakan sort (alfanumerik) secara internal

f1.txt

1
2
21
50

f2.txt

1
3
21
50

21 akan muncul di kolom ketiga

#WRONG
$ comm <(sort -n f1.txt) <(sort -n f2.txt)   
                1
2
21
        3
        21
                50

#OK
$ comm <(sort f1.txt) <(sort f2.txt)
                1
2
                21
        3
                50

cat f1.txt f2.txt | sort |uniq > file3

grep -Fxv -f first-file.txt second-file.txt

Pada dasarnya mencari semua baris di second-file.txt yang tidak cocok dengan baris mana pun di first-file.txt . Mungkin lambat jika file berukuran besar.

Juga, setelah Anda mengurutkan file (Gunakan sort -n jika numerik), maka comm seharusnya juga bekerja. Kesalahan apa yang diberikannya? Coba ini:

comm -23 second-file-sorted.txt first-file-sorted.txt

Linux
  1. Contoh Penting dari Perintah File di Linux

  2. Apa tujuan dari file .bashrc di Linux?

  3. Apa urutan default dari jenis Linux?

  1. Salin file di terminal Linux

  2. Ganti nama file di terminal Linux

  3. Bagaimana saya melihat du dalam GB bukannya MB di linux?

  1. Pindahkan file di terminal Linux

  2. Urutkan Perintah di Linux dengan Contoh

  3. Linux – Bagaimana Cara Memeriksa Informasi Struktur Direktori File Unix/linux?