Temukan & Ganti Teks di Beberapa Dokumen dari Command Line

Jika Anda merasa nyaman dengan baris perintah dan pernah dalam situasi di mana Anda perlu mencari dan mengganti kata, frasa, URL, atau karakter di seluruh kelompok dokumen teks ganda, perl melakukan pekerjaan dengan cukup baik. String perintah sederhana akan sangat cepat melakukan pencarian kelompok dan mengganti pada teks, baik dalam satu dokumen atau mencakup sekelompok dokumen ganda.

Seperti banyak hal di baris perintah, tidak ada proses konfirmasi, jadi Anda harus memastikan sintaks Anda disetel dengan benar sebelum memulai perintah, jika tidak, Anda mungkin perlu melakukan pencarian & ganti lain untuk memperbaiki kesalahan ketik Anda.

Sintaks perintah dasar adalah sebagai berikut:

perl -pi -w -e 's/THIS/THAT/g;' /path/to/files*.txt

Untuk contoh kata tunggal, jika Anda perlu mengganti semua contoh "ogre" dengan "cornbread" di setiap file .txt dalam folder "Documents", maka Anda akan menggunakan perintah berikut:

perl -pi -w -e 's/ogre/cornbread/g;' ~/Documents/*.txt

Untuk contoh menemukan dan mengganti seluruh frase, mari kita asumsikan kita akan mengganti seluruh kalimat "The Chocolate Factory" dengan "The Wizard of Oz" dalam kelompok file .txt dimulai dengan "Film" yang disimpan dalam Dokumen direktori:

perl -pi -w -e 's/The Chocolate Factory/The Wizard of Oz/g;' ~/Documents/Films*.txt

Temukan dan ganti segera dilakukan. Anda dapat memeriksa ulang perubahan dengan menggunakan kucing dan grep untuk memeriksa:

cat ~/Documents/Films124.txt |grep "Wizard of Oz"

Diakui, ini cukup maju, dan ya, bets menemukan dan mengganti melalui beberapa dokumen dapat dilakukan dengan cara yang lebih ramah pengguna melalui aplikasi GUI seperti TextWrangler dan BBEdit, tetapi kadang-kadang baris perintah hanya lebih cepat untuk tugas-tugas cepat seperti ini dan yang lainnya serupa, ditambah itu tidak memerlukan unduhan tambahan untuk digunakan.

Jempol ke Lifehacker untuk trik yang sangat bagus.

Pembaruan : Perintah 'sed' adalah cara lain untuk melakukan pencarian dan penggantian cepat melalui baris perintah. Menutupi sebagian besar adalah topik untuk artikel lain, tetapi sintaks dasar menggunakan sed untuk tugas ini sedikit lebih sederhana dan lebih mudah diingat:

sed -i 's/THIS/THAT/g' /path/to/files*.txt

Tidak ada cara yang benar atau salah, jadi apakah Anda menggunakan perl atau sed menjadi masalah preferensi pribadi.