Kemarin malam, aku melakukan kesalahan bodoh dalam membuat script menggunakan bahasa PHP. Intinya sih script yang aku buat akan memberikan output file yang merepresentasikan isi dari suatu query ke database MySQL. Masing-masing field akan dipisahkan oleh tanda semicolon (;) dan masing-masing row akan dipisahkan oleh karakter newline (\n).
Berhubung karena aku melakukan kesalahan, aku lupa menambahkan karakter newline yang akan menjadi pemisah antar row. Karena kesalahan ini, file output tersebut hanya berisi satu baris. Terlebih lagi hasil query data yang aku lakukan juga lumayan banyak, maka ukuran file output tersebut juga lumayan besar. Isi file tersebut memiliki format :
aaaa1;bbbb1;cccc1;dddd1;eeee1;fffff1;;;;;;aaaa2;bbbb2;cccc2;dddd2..... (dst)
Entah juga apakah ini merupakan kesalahan lain dari scriptku atau bukan. Satu row query berisi enam field. Tapi jika melihat isi filenya seolah ada 11 field. Tapi beruntung juga sih, karena kesalahan ini aku bisa melihat bahwa masing-masing row dipisahkan oleh string ';;;;;;'.
Setelah berpikir lumayan lama mengenai solusi untuk memecahkan masalah ini - yang diantaranya adalah membuat script lain yang akan memecah satu baris file tersebut sesuai dengan jumlah row hasil query -, aku mencoba cara lain yang lebih sederhana, yaitu membuka file tersebut menggunakan editor dan me-replace semua string ';;;;;;' dengan karakter newline. Ternyata, karena saking besarnya ukuran file, ketika dibuka saja aplikasi editornya udah nge-hang duluan.
Akhirnya aku mencoba untuk mengutak-atik isi filenya mengunakan perintah di Shell. Ternyata hanya dengan menggunakan perintah sed (stream editor), semua masalah bisa terselesaikan. Untuk me-replace semua string ';;;;;;' menjadi karakter newline, hanya perlu menggunakan perintah
sed 's/;;;;;;/\n/g' [nama file]
Lama-lama jadi semakin betah aja ngutak-ngatik perintah-perintah Shell di Unix :P. Praktis dan cepat, tanpa perlu membuka file dan melihat isinya, semuanya langsung dikerjakan oleh satu baris perintah. Mungkin masalah diatas juga bisa diselesaikan menggukana editor vi. Cuma berhubung masalahnya udah selesai, nggak aku cobain deh tuh vi nya.
Wednesday, December 12, 2007
The Power Of Unix Shell
Subscribe to:
Post Comments (Atom)

9 comments:
Jika file yang mau diubah banyak,
sed bisa dikombinasikan dengan find
Untungnya cuma satu filenya :P
wah baru ngerasain ya lu ko :P
banyak aplikasi2 kecil yang bisa membaca stream dan ngeluarin stream. sed itu salah satunya aja..
contoh yg pernah gw lakukan tuk membuat Packages dan Packages.bz2 dari Packages.gz
zcat Packages.gz | tee Packages | bzip2 -9 -c > Packages.bz2
tuk ngedump+ngompress database jg enak
mysqldump blahblah | gzip -9 -c > data.sql.gz
Yoi.. banyak sih command-command kecil tapi bener2 berguna banget. Makanya aku suka Ubuntu gara-gara itu jg.
* ga nyambung *
Welcome to unix shell. :P
Jangan lupa awk, cut, tail, cat, dll.
Yoi Pe, lagi belajar nih. Secara sekarang tiap hari udah pake Ubuntu. Hehehe
Btw, AWK masih terlalu advanced. Belajarnya satu-satu lah. Lagipula yang kayak bgini kan kebanyakan dapet ilmunya dari pengalamanan juga, nggak cuma dari baca teori doang.
cut lumayan tuk tokenizer..
misal tuk ngambil kolom ke 2 dg delimiter spasi
$ cat file | cut -d' ' -f 2
Hehehe, itu salah satunya yang cukup berguna. Yang sering dipake ls, grep, cat, cut, ampe sed juga :P
hedopppp windows!!!
Post a Comment