“Search and Replace” Karakter Pada Banyak Dokumen di Unix Shell

Thursday, May 29th, 2008

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.

Apakah Anda Menggunakan Sistem Operasi Terbaru?

Saturday, May 3rd, 2008

Dalam dunia open source siklus rilis dari sebuah sistem operasi bisa dibilang sangat cepat. Seperti Ubuntu sudah melakukan rilis terjadwal walaupun kadang bisa lewat dari jadwal yang dijanjikan. Ubuntu sendiri menjadwalkan rilis setiap 6 bulan sekali.

Menggunakan sistem operasi yang terbaru (dalam artian sistem operasi tersebut masih baru beberapa hari dirilis) memang membawa kebahagiaan sekaligus bencana. Menemukan error dan bugs bahkan google juga belum bisa menjawabnya, itulah yang membuat pusing. Lihat keluhan Okto Silaban dalam migrasinya ke Ubuntu 8.04 dan juga ada teman saya yang ingin kembali lagi ke sistem operasi yang lama karena tidak tahan dengan sistem operasi yang baru.

Mereka ini hanya sebagian kecil dari orang - orang yang kecewa dengan sistem operasi yang baru. Saya yakin masih banyak orang yang juga mengalami hal yang sama. Saya juga pernah mengalaminya, pada saat update dari Ubuntu 6.06 ke Ubuntu 6.10 yang mengakibatkan xorg saya rusak, dan akhirnya saya melakukkan instalasi ulang dan harus mengkonfigurasi ulang sistem operasi yang baru.

Tentu saja ini membuat saya tidak produktif, karena harus menghabiskan waktu untuk mengatasi masalah dan konfigurasi ulang sistem. Sejak saat itu saya tidak mau lagi untuk terburu - buru mengupdate sistem operasi. Kalau memang lagi santai sih tidak masalah, tapi kalau lagi dikejar pekerjaan jangan coba - coba untuk mengupdate sistem operasi. Saya sendiri sekarang ini masih menggunakan Ubuntu 6.10 untuk pekerjaan di kantor, dan menggunakan Debian Etch untuk pekerjaan di rumah.