Saya memiliki file teks besar (sekitar 2GB). Saya ingin melakukan lima pencarian dan mengganti tindakan pada file yang sama, dan ingin melakukan ini dalam satu perintah. Biasanya saya menggunakan vim, buka file, lakukan satu tindakan ganti, kemudian berikutnya, dll. Ada satu tangkapan, karena saya perhatikan bahwa setelah tiga atau empat pencarian vim crash karena masalah memori.
Berikut adalah dua contoh perintah yang saya gunakan di Vim:
:%s/www\.abcdef/www.test.abcdef/g
:%s/www\.klmnop/www.test.klmnop/g
Apa cara terbaik untuk menangani ini?
linux
vim
sed
find-and-replace
SPRBRN
sumber
sumber
sed
. Saya mencoba, dan itu berhasil. Ada utas yang bagus di Unix & Linux Stackexchange , dan jawaban yang diterima tidak menyebutkan titik sebagai karakter untuk melarikan diri.Jika Anda memiliki lebih banyak pola pencarian, Anda dapat menyimpannya dalam file dan membaca substitusi dari sana. Sebagai contoh, katakan ini adalah isi dari
replacements.txt
:Anda kemudian dapat membaca daftar penggantian N dan menggantinya dengan ini:
CATATAN:
replacements.txt
.sed
per penggantian yang mungkin memakan waktu cukup lama jika Anda memiliki banyak operasi penggantian.Pilihan lain adalah menulis di atas sebagai
sed
skrip:Anda kemudian dapat menjalankan skrip pada file Anda dan itu akan membuat semua penggantian dalam sekali jalan:
sumber