Perintah awk Text Proses menyajikan dan memanipulasi data text
Awk adalah perintah sekaligus bahasa scripting yang digunakan untuk memanipulasi data dan menghasilkan laporan. Bahasa pemrograman atau perintah awk tidak memerlukan kompilasi dan memungkinkan pengguna untuk menggunakan variabel, fungsi numerik, fungsi string, dan operator logika.
Awk singkatan dari nama 3 pengembang yaitu Aho, Weinberger, dan Kernighan.
Apa yang bisa Di lakukan Dengan Awk ?
- Scanning bari per bari dari sebuah file.
- Split dari sebuat baris menjadi beberapa kolom.
- Membandingkan baris dan kolom dengan patern pembanding.
- Melakukan aksi terhadap line tertentu yang cocok.
- Format tampilan OutPut.
- Kondisi dan looping.
- Artimatik dan String Proses.
Syntax
awk options 'selection _criteria {action }' input-file > output-file
Contoh Penggunakan awk
Untuk memperaktekkan penggunakan awk ini perlu memiliki file text yang menjadi input file, Silahkan membuat file dengan perintah vi, vim, nano atau editor text lainnya. Untuk isi text file nya bisa menggunakan contoh berikut ini.
File bisa dberikan nama pegawai.txt
Nama Jenis Kelamin Esselon Pangkat
DADAN GANDANA Pria II.b Pembina Utama Muda
FAHRUDIN Pria III.a Pembina Tingkat I
DULHAK Pria III.b Penata Tingkat I
CHAERIL APRILIANA Pria III.b Pembina Tingkat I
ABDUL QODIR Pria III.b Pembina
RUSLAN FARID Pria III.b Pembina
ACI SULASTRIYANA, S.Pd Wanita IV.a Penata Tingkat I
SRI RUHYATIN, S.Pd Wanita IV.a Penata
AFNI FEBRI MAULANI, S.Pd Wanita IV.a Penata Tingkat I
SOBARI, S.I.P Pria IV.a Penata Tingkat I
Menampilan Setiap Baris isi File
Ini adalah kondisi bawaan atau default dari action print di awk.
# awk '{print}' pegawai.txt
// atau
# awk '{print $0}' pegawai.txt
Menampilan Nomor Baris NR variabel
Dengan tambahan Opsi NR bisa membantu menampilkan nomor baris.
# awk '{print NR,$0}' pegawai.txt
NR juga bisa digunakan untuk menghasilkan output berdasarkan baris yang akan di cetak.
// MENCETAK BARIS KE 4
# awk '{print NR,$0}' pegawai.txt | awk 'NR==4'
// MENCETAK BARIS 1 -4
# awk '{print NR,$0}' pegawai.txt | awk 'NR <= 4'
// MENCETAK BARIS KURANG DARI 3
# awk '{print NR,$0}' pegawai.txt | awk 'NR < 4'
//MENCETAK BARIS Lebih dari 9
# awk '{print NR,$0}' pegawai.txt | awk 'NR > 9'
//MENCETAK BARIS DARI BARIS 9 ke AKHIR
# awk '{print NR,$0}' pegawai.txt | awk 'NR >= 9'
Menampilan Data PerKolom / Field
Defaultnya spasi/space pada baris akan berfungis sebagai delimiter dan menyatakan sebagai kolom berbeda, jadi setiap baris jika memilki jumlah spasi/space akan memiliki jumlah kolom yang berbeda. Setiap pemanggilan Kolom menggunakan tanda $
# awk '{print $1}' pegawai.txt
//atau
# awk '{print $1, $2}' pegawai.txt
[root@alma8 home]# awk '{print $1, $2}' pegawai.txt
Nama Jenis
DADAN GANDANA
FAHRUDIN Pria
DULHAK Pria
CHAERIL APRILIANA
ABDUL QODIR
RUSLAN FARID
ACI SULASTRIYANA,
SRI RUHYATIN,
AFNI FEBRI
SOBARI, S.I.P
Dapat dilihat dari data baris FHANRUDIN dan DULHAK yang mana baris jenis kelamin masuk kedalam kolom ke-2 dikarenakan perbedaan spasi/space.
Menampilan Kolom / Field Terakhri NF variabel
Karena setiap Kolom atau Field bisa berbeda, gunakan opsi $NF untuk mencetak akhir kolom.
# awk '{print $NF}' pegawai.txt
[root@alma8 home]# awk '{print $NF}' pegawai.txt
Pangkat
Muda
I
I
I
Pembina
Pembina
I
Penata
I
I
Menampilan Dengan Kondisi Pola Tertentu / Pattern
awk juka dapat langsung menyari data dengan pola atau pattern, memudahkan penyaringan data. Dalam contoh ini menggunakan kondisi pola atau pattern dimana data pegawai esselon “III.b”.
# awk '/III.b/ {print}' pegawai.txt
[root@alma8 home]# awk '/III.b/ {print $0}' pegawai.txt
DULHAK Pria III.b Penata Tingkat I
CHAERIL APRILIANA Pria III.b Pembina Tingkat I
ABDUL QODIR Pria III.b Pembina
RUSLAN FARID Pria III.b Pembina
Menggunakan Hasil Input Kolom menjadi Variable
awk juga bisa menyimpan hasil ke dalam sebuah variabel, Dalam contoh dibawah ini $1 kolom 1 kana di smpangi variable x dan di cetak
# awk '{ x = $1 }; { print x}' pegawai.txt
[root@alma8 home]# awk '{ x = $1 }; { print x}' pegawai.txt
Nama
DADAN
FAHRUDIN
DULHAK
CHAERIL
ABDUL
RUSLAN
ACI
SRI
AFNI
SOBARI,
Hasil OutPut dari file Program
awk juga bisa digunakan bersamaan dengan file program, dalam contoh mencetak kolom 1 demgan perulangan yang di tulis kedalam file program bernama tes.awk dengan isi berikut ini;
# file tes.awk
{
peg[i++]=$1;
sum = 0;
}
END{
for (i in peg)
{
nama=peg[i];
print i, nama;
}}
Untuk menjalankannya dengan perintah dibawah ini.
# awk -f tes.awk pegawai.txt
Meyimpan Ke file baru hasil Out put awk
Hasil Out put awk bisa disimpan di file baru dan digunakan kembali nantinya, dengan menambahkan operator > lalu nama file. Contoh dibawah ini menyimpan hasil outout contoh sebelumnya ke falam file nama.txt
# awk -f tes.awk pegawai.txt > nama.txt
[root@alma8 home]# awk -f tes.awk pegawai.txt > nama.txt
[root@alma8 home]# more nama.txt
0 Nama
1 DADAN
2 FAHRUDIN
3 DULHAK
4 CHAERIL
5 ABDUL
6 RUSLAN
7 ACI
8 SRI
9 AFNI
10 SOBARI,
[root@alma8 home]#
Membagi kolom/Field dengan Delimiter
Defaultnya awk menggunakan space/spasi sebagai delimiter field/kolom, tapi delimiter ini dapat disesuaikan dengam opsi -F. Sebagai contoh dalam kasus ini membagi 2 Field/Kolom dengan Delimiternya dan adalah Pria dan Wanita.
# awk -F "Pria|Wanita" '/Pria|Wanita/ {print NR-1,$1}' pegawai.txt
Hasil output yang didapatkan keseluruhan nama dari pegawai lengkap berseta gelar pendidikan.
STDIN input AWK
AWK juga bisa melakukan proses pada input STDIN. seperti contoh dibawah
# cat /var/log/messages | awk '/httpd/ {print}'
Perintah cat pada dasarnya melihat isi file lalu dengan awk kita bisa melakukan filter data yang ingin ditampilkan, fungsi menjadi seperti perintah grep
.
[root@alma8 ~]# cat /var/log/messages | awk '/httpd/ {print}'
Jul 4 06:42:21 alma8 httpd[1193]: Server configured, listening on: port 443, port 80
Jul 4 01:58:47 alma8 httpd[1177]: Server configured, listening on: port 443, port 80
Jul 5 20:29:44 alma8 httpd[1186]: Server configured, listening on: port 443, port 80
Jul 6 19:33:46 alma8 httpd[1168]: Server configured, listening on: port 443, port 80
Dengan memanfaatkan perintah awk sangat membantu dalam melakukan proses text, sehingga bisa dimanfaatkan sebagai hasil atau input program lainnya. Sampai disini artikel perintah awk, Selamat mencoba.