Perintah AWK Menggunakan Expression sebagai pattern.
Di dalam awk
Expression atau ekpresi dapat digunakan sebagai pattern dan juga sebagai action. Jika digunakan sebagai Pattern berfungsi sebagai kontrol check atau filter. Jika digunakan sebagai Action maka akan menghasilkan nilai baru yang bisa di jadikan output atau di simpan kedalam variabel dengan operator assignment operator ( = )
.
Pada penerapannya Expression akan menggunakan operator, berikut ini Operator yang bisa digunakan
Comparison Operator : | Logical Operator : |
---|---|
x True if x is less than y True if x is less than or equal to y True if x is greater than y True if x is greater than or equal to y True if x is equal to y True if x is not equal to y True if the string x matches the regexp denoted by y True if the string x does not match the regexp denoted by y | && Logical ANDReturns true if both expression are true || Logical ORReturns true if one of the expression is true ! Logical NOTReverse the result, returns false if the result is true |
Penggunaan Expression Sebagai Pattern
Ketika digunakan sebagai pattern jika expression cocok atau bernilai true barulah action dieksekusi. Bentuk Umum penggunakan Expression sebagai pattern adalah sebagai berikut :
awk '(1st Expression) {action}' fileinput
// atau
STDIN | awk '(1st Expression) {action}'
awk '(1st Expression) Operator (2nd Expression) {action}' fileinput
atau
STDIN | awk '(1st Expression) Operator (2nd Expression) {action}'
Contoh 1 Perbandingan / Comparasion String
Sebagai contoh penerapan mari dicoba menampilan buah yang berwarna “red” pada list data file buah.txt.
# awk '($2=="red") {print $1}' buah.txt
//atau
# cat buah.txt | awk '($2=="red") {print $1}'
[root@alma8 ~]# cat buah.txt
Apel red 4 $20
Pisang yellow 6 $10
Stroberi red 3 $30
Rasberi red 99 $100
Anggur purple 10 $50
Apel green 8 $40
Naga purple 2 $20
Sawo brown 4 $50
Kentang brown 9 $30
Nanas yellow 5 $110
[root@alma8 ~]# cat buah.txt | awk '($2=="red") {print $1}'
Apel
Stroberi
Rasberi
[root@alma8 ~]#awk '($2=="red") {print $0}' buah.txt
Apel red 4 $20
Stroberi red 3 $30
Rasberi red 99 $100
Ketika Expresssion ($2=="red")
atau Kolom 2 berisikan “red” makan akan mencetak seluruh baris {print $0}
. Action cetak akan dijalankan jika Expression menghasilkan true atau data sesuai.
Contoh 2 perbandingan angka / Comparasion numeric
Menampilkan semua baris data dengan kolom ke-3 dari buah.txt yaitu jumlah barang kurang dari 5 ( < 5 ). Ketika menggunakan Expression pada pada data numeric membutuhkan Operator seperti4 < > <= >= ==
[root@alma8 ~]# awk '($3 < 5 ) {print $0}' buah.txt
Apel red 4 $20
Stroberi red 3 $30
Naga purple 2 $20
Sawo brown 4 $50
Menampilan semua baris data dengan harga lebih dari atau sama dengan $50 ( >= $50 )
Untuk menerapkannya di awk karena kolom 4 berupa string karena memiliki tanda $ perlu kita pisahkan dengan memanfaat kan Delimiter FS
menjadi $ maka data baris yang semualnya 4 kolom akan menjadi 2 kolom karena delimiter.
# awk 'BEGIN {FS="$"}($2 >= 50 ) {print $0}' buah.txt
Bisa dilihat pada gambar diatas hasil menampilkan harga lebih dari atau sama dengan $50.
Contoh 3 Penggunaan Regex
Menampilkan data Buah dengan akhiran “ng”, untuk melakukannya dibutuhkan regex dan operator "~"
.
# awk '($1 ~ /ng$/) {print $0}' buah.txt
Contoh 4 Penggunaan Logical Operator
Menampilkan seluruh data buah dengan awalan huruf ” A “ atau akhiran ” ng”. Karena ada kondisi yang harus dipenuhi dibutuhkan Logical Epxression ( || )
.
# awk '($1 ~ /^A/) || ($1 ~ /ng$/) {print $0}' buah.txt
[root@alma8 ~]# awk '($1 ~ /^A/) || ($1 ~ /ng$/) {print $0}' buah.txt
Apel red 4 $20
Pisang yellow 6 $10
Anggur purple 10 $50
Apel green 8 $40
Kentang brown 9 $30
Jika dilihat hasilnya selama salah satu expression dipenuhi makan data record akan di tampilkan, expression ($1 ~ /^A/)
akan menampilkan buah yang berawalan “A” dan expression ($1 ~ /ng$/)
menampilkan buah dengan akhiran “ng“.
Contoh 6 Hasil dari Logical Operator di gunakan pada STDIN Pipe awk Berikutnya
Berikutnya sebagai contoh penggunaan hasil out put dari expression awk pertama di gunakan kembali sebagai input di pipe ( |
) awk berikut nya.
Menampilkan baris ke 1 – 5 dari data buah yang hanya berwarna red dan purple dan hasil dari data di total total harganya,
# awk '(NR <= 5) && (($2 == "red")||($2 == "purple"))' buah.txt | awk 'BEGIN {FS = "$"}{a+=$2; print $0} END {print "\nTotal Harga :\t$",a } '
(NR <= 5)
Expression pertama untuk menampilkan baris data ke 1- 5 ($2 == "red")||($2 == "purple")
expression ini akan menampilkan warna red dan purple. Lalu hasil akan di gunakan dalam pipe awk berikutnya. BEGIN {FS = "$"}
menentukan delimiter untuk mebaca kolom harga, a+=$2
statement untuk menghitung kolom harga yaotu $2
setelah dikenakan delimiter, dan terakhir END {print "\nTotal Harga :\t$",a }
Action untuk mencetak String “Total Harga” dan nilai variabel a
.
Kesimpulan
Penggunaan Expression atau ekspresi pada pattern mempersingkat waktu dalam melakukan penyaringan atau filter data yang diinginkan.