“Search and Replace” Karakter Pada Banyak Dokumen di Unix Shell
Thursday, May 29th, 2008Saya 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.