Bagaimana cara menghapus semua baris dari file teks yang mengandung kata "cat" dan "rat"?
command-line
text-processing
PersonX
sumber
sumber
Jawaban:
grep
pendekatanUntuk membuat salinan file tanpa baris yang cocok dengan "cat" atau "rat", orang dapat menggunakan
grep
secara terbalik (-v
) dan dengan opsi seluruh kata (-w
).Opsi seluruh kata memastikan itu tidak akan cocok
cats
ataugrateful
misalnya. Redirection output dari shell Anda digunakan (>
) untuk menulisnya ke file baru. Kami membutuhkan-E
opsi untuk mengaktifkan ekspresi reguler yang diperluas untuk(one|other)
sintaks.sed
pendekatanAtau, untuk menghapus garis di tempat yang bisa digunakan
sed -i
:The
\b
batas set kata dand
operasi menghapus garis yang cocok dengan ekspresi antara garis miring ke depan.cat
danrat
keduanya dicocokkan dengan(one|other)
sintaks yang tampaknya perlu kita hindari dengan garis miring terbalik.Tip: gunakan
sed
tanpa-i
operator untuk menguji output dari perintah sebelum menimpa file.(Berdasarkan Sed - Hapus baris yang berisi string tertentu )
sumber
Untuk menguji di terminal saja, gunakan:
Untuk benar-benar menghapus garis-garis itu dari file, gunakan:
sumber
Coba dengan vim-way:
sumber
Pertimbangkan jika Anda memiliki file dengan
file_name
dan Anda ingin mencari mouse tetapi pada saat yang sama beberapa baris dari mouse memiliki kata-kata lain seperticat
danrat
dan Anda tidak ingin melihat orang-orang di output Anda, jadi satu-satunya cara untuk melakukannya adalah -sumber
cara shell portabel
Bekerja di
/bin/sh
, yang adadash
di Ubuntu, sertaksh
, danbash
. Sedikit canggung bahwa Anda harus menulis beberapa test case untuk setiap kata dalamcase
pernyataan tetapi portabel. Bekerja dengan kasus di mana kata muncul sendiri di telepon, di awal, di akhir baris, atau di tengah kalimat, dan mengabaikan di mana kata itu mungkin menjadi bagian dari kata lain.Dan ini cara kerjanya:
sumber