Cara menghapus String Massal pada File secara cepat

Posted by

Saya ada kebutuhan untuk menghapus string pada file text dengan baris yang cukup banyak. Permasalahannya adalah string yang akan dihapus bersifat unik dan ada lebih dari 30k string. Untuk melakukan hal tersebut, saya biasa menggunakan perintah sed dibarengi dengan for loop untuk melakukan looping. Namun saking banyaknya string unik yang harus dihapus, proses looping dan hapus membutuhkan waktu yang cukup lama. Sebagai contoh

file a.txt

aa
bb
cc
zz

file b.txt

gg
cc
ff
bb
ia
xyz

Hasil yang diinginkan pada file b.txt adalah sebagai berikut

gg
ff
ia
xyz

File a.txt adalah list string yang akan dihapus pada file b.txt. Jika menggunakan perintah sed, prosesnya seperti berikut

for i in `cat a.txt`; do
sed -i /$i/d b.txt
done

Proses diatas akan melakukan looping string pada file a.txt. Lalu menghapus string yang sesuai dengan data pada file a.txt terhadap file b.txt. Proses ini cukup lama mengingat total string unik pada case yang saya alami ada lebih dari 30k string.

Untuk mempercepat prosesnya, saya menggunakan perintah grep. Perintahnya sebagai berikut

grep -vFf a.txt b.txt > hasil.txt

Perintah diatas akan menghapus string pada file b.txt sesuai dengan string yang ada pada file a.txt. Hasil hapusnya disimpan menjadi file hasil.txt

Dengan perintah grep, proses penghapusan menjadi lebih cepat

Silakan dicoba dan semoga bermanfaat 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.