Cari & Gantikan Teks dalam Berbilang Dokumen daripada Baris Perintah
Jika anda selesa dengan baris arahan dan pernah berada dalam situasi di mana anda perlu mencari dan menggantikan perkataan, frasa, URL atau aksara merentas sekumpulan berbilang dokumen teks, perl menjalankan tugas dengan baik. Rentetan arahan yang mudah akan melakukan pencarian dan penggantian kumpulan kumpulan dengan sangat cepat pada teks, sama ada dalam satu dokumen atau merangkumi sekumpulan berbilang dokumen.
Seperti banyak perkara dalam baris arahan, tiada proses pengesahan, jadi anda perlu memastikan sintaks anda ditetapkan dengan betul sebelum memulakan arahan, jika tidak, anda mungkin perlu melakukan carian & ganti yang lain untuk membaiki kesilapan menaip anda.
Sintaks arahan asas adalah seperti berikut: perl -pi -w -e 's/THIS/THAT/g;' /path/to/files.txt
Untuk contoh perkataan tunggal, jika anda perlu menggantikan semua contoh "ogre" dengan "roti jagung" dalam setiap fail .txt dalam folder "Dokumen", maka anda akan menggunakan arahan berikut:
perl -pi -w -e 's/ogre/cornbread/g;' ~/Dokumen/.txt
Untuk contoh mencari dan menggantikan keseluruhan frasa, mari kita anggap kita akan menggantikan keseluruhan ayat “The Chocolate Factory ” dengan “The Wizard of Oz” dalam kumpulan fail .txt bermula dengan “Filem” yang disimpan dalam direktori Dokumen:
perl -pi -w -e 's/The Chocolate Factory/The Wizard of Oz/g;' ~/Dokumen/Filem.txt
Pencarian dan penggantian dilakukan serta-merta. Anda boleh menyemak semula perubahan dengan menggunakan cat dan grep untuk menyemak:
cat ~/Documents/Films124.txt |grep Wizard of Oz"
Diakui, ini agak maju, dan ya, pencarian dan penggantian kelompok melalui berbilang dokumen boleh dilakukan dengan cara yang lebih mesra pengguna melalui apl GUI seperti TextWrangler dan BBEdit, tetapi kadangkala baris arahan hanya lebih pantas untuk tugasan pantas seperti ini dan lain-lain yang serupa, serta ia tidak memerlukan sebarang muat turun tambahan untuk digunakan.
Terima kasih kepada Lifehacker untuk helah yang sangat baik.
Kemas kini: Arahan 'sed' ialah satu lagi cara untuk melakukan carian pantas dan menggantikan melalui baris arahan. Meliputi sed kebanyakannya topik untuk artikel lain, tetapi sintaks asas menggunakan sed untuk tugasan ini sedikit lebih mudah dan dengan itu lebih mudah diingati:
sed -i 's/THIS/THAT/g' /path/to/files.txt
Tiada cara yang betul atau salah, jadi sama ada anda menggunakan perl atau sed menjadi pilihan peribadi.