GNU/Linux >> Belajar Linux >  >> Linux

Alat Untuk Mendapatkan Garis Dalam Satu File Yang Tidak Di File Lain?

Apakah ada alat yang bisa mendapatkan baris yang berisi file A, tetapi file B tidak? Saya bisa membuat skrip sederhana dengan, misalnya, Perl, tetapi jika hal seperti itu sudah ada, saya akan menghemat waktu saya mulai sekarang.

Jawaban yang Diterima:

Ya. grep standard standar alat untuk mencari file untuk string teks dapat digunakan untuk mengurangi semua baris dalam satu file dari yang lain.

grep -F -x -v -f fileB fileA

Ini bekerja dengan menggunakan setiap baris dalam fileB sebagai pola (-f fileB ) dan memperlakukannya sebagai string biasa untuk dicocokkan (bukan regex biasa) (-F ). Anda memaksa kecocokan terjadi di seluruh baris (-x ) dan cetak hanya baris yang tidak cocok (-v ). Oleh karena itu, Anda mencetak baris di fileA yang tidak berisi data yang sama dengan baris mana pun di fileB.

Kelemahan dari solusi ini adalah tidak memperhitungkan urutan baris dan jika input Anda memiliki baris duplikat di tempat yang berbeda, Anda mungkin tidak mendapatkan apa yang Anda harapkan. Solusinya adalah dengan menggunakan alat perbandingan nyata seperti diff . Anda dapat melakukan ini dengan membuat file diff dengan nilai konteks pada 100% dari baris dalam file, lalu menguraikannya hanya untuk baris yang akan dihapus jika mengonversi file A ke file B. (Perhatikan juga perintah ini menghapus pemformatan diff setelah mendapatkan baris yang benar.)

diff -U $(wc -l < fileA) fileA fileB | sed -n 's/^-//p' > fileC

Linux
  1. Perbedaan Antara Perintah Bawaan Dan Yang Tidak?

  2. Bagaimana Cara Mendapatkan Jumlah Md5 Dari Isi Direktori Sebagai Satu Jumlah?

  3. Kapan Seseorang Mendapatkan Pesan Kesalahan "pekerjaan:Tidak Ditemukan"?

  1. Fitur Rackspace Cloud Servers yang tidak tersedia di Fortigate-VM

  2. Bagaimana cara menggunakan baris file sebagai argumen perintah?

  3. Bagaimana cara menghapus garis yang muncul pada file B dari file A lainnya?

  1. Cara mendapatkan ukuran file tar.gz dalam (MB) dengan python

  2. masukkan isi file ke yang lain (di baris tertentu dari file yang dikirim) -BASH/LINUX

  3. Cara mendapatkan alamat MAC perangkat yang tidak ada dalam jaringan