GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Membandingkan Dua File Dan Kemudian Menambahkan Baris Yang Tidak Cocok Sebagian?

Saya mencoba membandingkan dua file (Extensions.txt dan Temp.txt ). Jika ada baris yang tidak cocok sebagian dari Extensions.txt di Temp.txt Saya ingin menambahkan baris yang hilang ke Temp.txt .

Extensions.txt (Sangat mendasar, satu kolom):

111
1234
4321

Temp.txt :

1234/sip:[email protected]:5060  9421b96c5e   Avail   1.480
4321/sip:[email protected]:5060  e9b6b979a4   Avail   1.855

Pada dasarnya, yang ingin saya lakukan adalah menemukan kecocokan berdasarkan semua yang ada sebelum / di kolom pertama dan jika tidak ada yang cocok, saya ingin mencetak baris yang tidak cocok ke bagian bawah file sehingga menjadi seperti ini:

1234/sip:[email protected]:5060 9421b96c5e Avail 1.480
4321/sip:[email protected]:5060 e9b6b979a4 Avail 1.855
111

Sejauh ini saya telah mencoba grep -v dan tidak memberikan hasil yang saya inginkan, saya juga mencoba dengan awk dan sepertinya begitulah caranya, namun saya tidak memiliki pemahaman penuh tentang bagaimana awk bekerja untuk menghasilkan hasil yang sesuai.

Jawaban yang Diterima:

Anda dapat mengurai file dengan awk

awk -F '/' '
    FNR == NR {seen[$1] = $0; next}
    {if ($1 in seen) print seen[$1]; else missing[$1]}
    END {for (x in missing) print x}
' Temp.txt Extensions.txt

Keluaran:

1234/sip:[email protected]:5060 9421b96c5e Avail 1.480
4321/sip:[email protected]:5060 e9b6b979a4 Avail 1.855
111
  • Setel pemisah bidang menjadi garis miring, -F '/'
  • Tindakan setelah FNR == NR dieksekusi untuk baris file input pertama. Kami menyimpan baris dalam array asosiatif seen sebagai kunci, dan pergi ke next baris.
  • Tindakan kedua dijalankan untuk file kedua, ketika FNR != NR . Jika bidang pertama cocok, kami mencetak baris yang disimpan, else kami menyimpan bidang ke dalam larik lain missing .
  • Di END , kami mencetak baris yang hilang.

Linux
  1. Bagaimana membandingkan tiga file di Linux menggunakan alat diff3

  2. Cara Kompres Dan Dekompresi File Di Linux

  3. Bagaimana Cara Menambahkan Beberapa Baris Ke File?

  1. 11 Contoh Perintah Linux diff3 (Bandingkan 3 File Baris demi Baris)

  2. Menggabungkan File Dan Menyisipkan Baris Baru Di Antara File

  3. Bagaimana cara mencari direktori dan menemukan file yang cocok dengan regex?

  1. Cara Zip File dan Direktori di Linux (dengan Contoh)

  2. Cara Menambahkan Nomor Baris Ke File Teks Di Linux

  3. Cara Menggabungkan Dua File Teks di Linux