Saya masih menggunakan kata "Search and Replace" karena belum menemukan padanan yang tepat dalam Bahasa Indonesia. Search and Replace adalah fitur yang wajib hukumnya ada di sebuah editor. Dengan fitur ini maka kita dapat dengan mudah mengganti karakter yang kita inginkan dengan karakter penggantinya. Dan tentunya ini sangat membantu pekerjaan kita. Tapi bagaimana jika kita harus mengganti karakter dengan pola yang sama pada banyak dokumen? Apakah kita harus membuka dokumen tersebut satu persatu dari editor dan menggunakan fitur "search and replace"? Cape deh...
Pada tulisan ini saya mencoba berbagi tips (pengetahuan)? untuk menghadapi masalah ini dengan menggunakaan fitur - fitur yang ada di Unix Shell (bagi pengguna MS Windows bisa pakai cygwin untuk menjalanakan perintah - perintah Unix Shell).
Untuk permasalahan tersebut, kita bisa menggunakan grep dan sed yang ada unix shell. Yang mana grep akan mencari dokumen yang mengandung karakter yang dicari dan sed akan mengganti karakter tersebut dengan karakter penggantinya. Untuk lebih lanjut silahkan lihat contoh kasus berikut:
Saya asumsikan kita mempunyai dokumen vendor.html, form-vendor.html detail-vendor.html, customer.html, form-customer.html dan detail-customer.html. Dokumen customer.html adalah duplikasi dari vendor.html dan form-customer.html adalah duplikasi dari form-vendor.html begitu juga dengan detail-customer.html yang merupakan duplikasi dari detail-vendor.html Kita ingin mengganti kata - kata vendor ataupun Vendor yang terdapat pada ketiga dokumen tersebut. Untuk itu kita bisa menjalankan perintah berikut dari terminal
grep -l 'vendor' -r -i *customer*.html | while read i; \ do sed -i -e 's/vendor/customer/g' \ -e 's/Vendor/Customer/g' $i; \ done;
Penjelasan:
Perintah tersebut terdiri dari dua bagian yaitu grep dan sed yang dijalankan dalam statemen while.
grep -l 'vendor' -r -i *customer*.html
Perintah ini akan mencari dokumen *customer*.html yang mengandung kata - kata customer dengan mengabaikan case sensitive.
while read i; do sed -i -e 's/vendor/customer/g' -e 's/Vendor/Customer/g' $i; done;
Perintah ini akan mengganti kata vendor menjadi customer dan kata Vendor menjadi Customer pada dokumen yang ditemukan oleh perintah grep sebelumnya.
Perintah diatas tidak terbatas untuk tiga dokumen saja. Dan anda juga dapat menggunakan regular ekspresi pada sed untuk menemukan pola karakter yang lebih spesifik lagi.
Comments
Bang, jelasin tentang pipelining la
bingung aku
kemaren aku buat command kayak gini:
sudo apt-get update | sudo apt-get upgrade
gag mau upgrade, cuma update aj.
| itu digunakan menjadikan output yang ada sebelum | menjadi input pada command setelah |
contohnya:
ls -l | grep muhfi
artinya :
grep menangkap kata 'muhfi' dari outputnya ls -l
apt-get update | sudo apt-get upgrade => ini akan menjalanakan update saja, karena output dari apt-get update tidak bisa dijadikan input di apt-get upgrade, kecuali di parsing dulu dengan sed.
Apa perlu dibahas di postingan berikutnya?
Hem,...
$ sudo apt-get update && sudo apt-get upgrade
Mungkin itu ya yang dimaksud? Melanjutkan perintah update dan dilanjutkan ke perintah upgrade? Ah,, asal tebak saja!
Nice Article!!
kok pake grep bro? bisa lsg hajar di sed nya
sed -e 's/search/replace/g' -e 's/search2/replace2/g' *.html
@ferdhie
Kebetulan kasusnya tidak untuk mengupdate semua file htmlnya :p
Kirim Komentar