404 NOT FOUND

BACK TO HOME OR SEARCH SOMETHING

Featured Post

Install Python di Android Dengan Aplikasi QPython

Install Python di Android Dengan Aplikasi QPython

Python merupakan bahasa pemograman yang cukup populer saat ini, sesuatu yang membuat bahasa pemograman ini populer adalah dalam penulisannya yang cukup simpel, dan tentunya python bisa dijalankan di …

Belajar AWK Command Line Linux

Apakah kalian pernah berfikir seandainya ada program pengolah teks di linux? Entah untuk filtering beberapa output hasil command tertentu yang anda jalankan,

Saya sudah lama memakai linux, beberapa bulan yang lalu menyadari seandainya saja ada program seperti itu.

Setelah saya telusuri ternyata ada sebuah ultility bernama AWK, nama ini di ambil dari keluarga developer/pembuat ultility tersebut,  Alfred Aho, Peter Weinberger, and Brian Kernighan.

Ada yang mengatakan AWK termasuk bahasa pemograman yang dibuat memang untuk text processing, saya setuju dengan itu, bagaimana dengan kalian?

Selain itu, ultility ini biasanya di gunakan sebagai, memproduksi laporan teks yang di format, melakukan operasi aritmatika, melakukan operasi string dan masih banyak lagi.

Pengolahan Teks Di Linux Dengan AWK

belajar awk commands linux


Saat ini kalian sudah mengenal tentang AWK walaupun hanya sedikit, kita lanjutkan bagaimana cara instalasi awk di linux.

Install AWK di Linux

Untuk distribusi debian, ubuntu dan turunannya kalian bisa menginstallnya dengan command line berikut ini.
$ sudo apt-get install gawk

Untuk arch linux.
$ sudo pacman -S gawk

Untuk RPM based GNU/Linux bisa menggunakan yum.
[root]# yum install gawk

Memahami Alur Kerja Awk

Tentunya agar bisa cepat dalam mempelajarinya, anda harus memahami alur kerja dari awk, ada tiga bagian yaitu Read, Execute, Repeat.

Read : awk akan membaca sebuah line di input stream (file, pipe, atau stdin) dan lalu menyimpannya ke memori.

Execute : command awk diterapkan secara berurutan pada input, dan secara default menjalankan perintah pada setiap barisnya,

Repeat : command awk yang kalian masukkan akan terus berjalan hingga file sampai ke bagian akhirnya (end of the line).

Struktur Program 

BEGIN Block : Ini akan dijalankan saat start up/ di awal dan di eksekusi hanya sekali. Ini contoh syntaxnya,
BEGIN {awk-commands}

Body Block : di sini awk commands akan di eksekusi secara berulang ulang, sampai akhir dari sebuah file atau output jika anda bekerja dengan stdin.
pattern {awk-commands}

END Block : Hampir sama dengan BEGIN Block, yang membuat berbeda adalah END Block di eksekusi di akhir.
END {awk-commands}

Built-in Variable Di Awk

Variable yang sudah dari bawaan awk, ini juga menjadi bagian penting untuk mengetahuinya.
  • NR - Menampilkan No dari setiap line, akan saya kasih contoh nanti dibawah.
  • FS - Separator/Pemisah, secara default whitespace (Spasi).
  • NF - Menghitung Jumlah bidang di catatan saat ini.

Oke, diatas hanya sebuah teori. Dan menurut saya tidak akan terlalu membantu dalam kesuksesan anda dalam mempelajari awk jika tidak memberikan contohnya.

Kita akan mulai ! Learning by doing itu juga penting.

Menggunakan Awk Untuk Text Processing di Linux

Basic syntax dalam menggunakan awk seperti dibawah ini.

Kita bisa melihat, ini basic syntax hanya menggunakan BODY block saja, tidak dengan BEGIN dan END block, saya akan bahas setelah ini mengenai itu.
awk 'pattern {awk-commands}' file

Bisa di perumpamakan bahwa saya memiliki file yang bernama members.txt dan berisi 2 bidang catatan yaitu nama dan status member. bidang catatan kalau menurt saya bisa dikatakan "kolom".
cat members.txt
Ailee Free
Fanny Free
Harley Premium
Boyka Premium
Jacklyn Free

Setelah itu kita coba manipulasi isi dari file tersebut.

Contoh:
awk '{print $0}' members.txt

Output:
Ailee Free
Fanny Free
Harley Premium
Boyka Premium
Jacklyn Free

Keterangan: 
$0 berfungsi untuk menampilkan output semua bidang catatan.

Lalu, bagaimana jika kita ubah $0 menjadi $1 apa yang akan terjadi? Yang akan terjadi adalah awk akan mengeluarkan output pada bidang ke-1 saja. Perhatikan !
awk '{print $1}' members.txt

Output:
Ailee
Fanny
Harley
Boyka
Jacklyn

Bisa disimpulkan jika kita mengubah nilainya menjadi $2 maka dia hanya akan mengeluarkan output di bidang kedua, kalian bisa mengubah nilainya sesuka hati, selama tidak melebihi batas jumlah bidang di dalam catatan kalian, jika melebihi awk tidak akan mengeluarkan output apapun.

Cuma gitu aja? Jangan salah paham dulu kita masih belum selesai ! Kita akan coba memberikan nomer dari setiap line yang akan dikeluarkan oleh awk.
awk '{print NR FS $0}' members.txt

Output:
1 Ailee Free
2 Fanny Free
3 Harley Premium
4 Boyka Premium
5 Jacklyn Free

Keterangan: 
Disitu ada sedikit penambahaan option , seperti yang kita ketahui NR berfungsi untuk memberikan no pada setiap line, dan FS merupakan pemisah, defaultnya spasi.

Diatas, jika kita hanya menggunakan body block, bagaimana jika mengimplementasikan BEGIN block? Perhatikan dibawah ini.
awk 'BEGIN {awk-commands} pattern {awk-commands}' file

Contoh:
awk 'BEGIN {print "DAFTAR MEMBER:\n"} {print NR FS $0}' members.txt

Output:
DAFTAR MEMBER:

1 Ailee Free
2 Fanny Free
3 Harley Premium
4 Boyka Premium
5 Jacklyn Free
Bisa kalian lihat, BEGIN block hanya akan mengeluarkan output sekali sebelum BODY block berjalan.

Bagaimana dengan END block? Dia akan berjalan hanya sekali sesudah operasi BODY block selesai, atau pada saat habisnya konten pada sebuah file. Basic syntaxnya seperti ini.
awk 'pattern {awk-commands} END {awk-commands}' 

Contoh:
awk '{print NR FS $0} END {print "Total Bidang Catatan : " NF "\nProses Selesai !"}' members.txt

Output:
1 Ailee Free
2 Fanny Free
3 Harley Premium
4 Boyka Premium
5 Jacklyn Free
Total Bidang Catatan : 2
Proses Selesai !

Nah, sekarang saatnya untuk membuat manipulasi penuh pada file tadi dengan awk. Saya akan memberikan contoh command beserta keterangannya di bawah ini.
awk 'BEGIN {print "Daftar Member:\n\nNo\tNama\tStatus\n"} {print NR"." "\t" $1 "\t" $2} END {print "\nTerimakasih dari Maxrooted !"}' members.txt

Output:
Daftar Member:

No      Nama    Status

1.      Ailee   Free
2.      Fanny   Free
3.      Harley  Premium
4.      Boyka   Premium
5.      Jacklyn Free

Terimakasih dari Maxrooted !

Keterangan:
\n : berfungsi untuk membuat line baru atau sama dengan ENTER di keyboard.
\t : berfungsi untuk membuat tab , sama dengan TAB di keyboard.
NR"." : Menampilkan Nomer setiap line, tetapi ada sedikit penambahan berupa tanda titik (.)
$1 : Menampilkan bidang catatan ke-1
$2 : Menampilkan bidang catatan ke-2


Thanks.

PERHATIAN Klik tombol dibawah ini untuk mulai berkomentar, dan saya mohon berkomentarlah dengan baik.

Subscribe