Saya memiliki file besar yang terdiri dari bidang teks yang dipisahkan oleh tanda titik koma dalam bentuk tabel besar. Telah diurutkan. Saya memiliki file yang lebih kecil yang terdiri dari bidang teks yang sama. Pada titik tertentu, seseorang menggabungkan file ini dengan orang lain dan kemudian melakukan semacam untuk membentuk file besar yang dijelaskan di atas. Saya ingin mengurangi garis-garis file kecil dari yang besar (yaitu untuk setiap baris dalam file kecil, jika string yang cocok ada di file besar, hapus baris itu di file besar).
File terlihat seperti ini
GenericClass1; 1; 2; NA; 3; 4;
GenericClass1; 5; 6; NA; 7; 8;
GenericClass2; 1; 5; NA; 3; 8;
GenericClass2; 2; 6; NA; 4; 1;
dll
Apakah ada cara cepat dan berkelas untuk melakukan ini atau saya harus menggunakan awk?
sumber
-x
opsi juga, kalau-kalau suatu baris dalam file yang lebih kecil terjadi pada saya substring dari baris lain di file utama. Juga, sangat mungkin bahwa jawaban @ UlrichSchwarz lebih cepat.comm
adalah temanmu:(
comm
mungkin akan memiliki manfaat kinerjagrep
karena memperhitungkan penyortiran.)Sebagai contoh:
sumber
comm -1 -3 file.txt bigfile.txt > newbigfile.txt
comm -1 -3 <(sort BAD.txt GOOD.txt) <(sort FILES.txt)