evilfactorylabs

Adiatma Kamarudin
Adiatma Kamarudin

Posted on

Bermain - main dengan awk, tail, dan head

Oke jadi kali ini gw mau share dikit soal, awk, tail dan head di bash, dan yang paling penting awk sih, karena awk mendukung operasi logic, beda dengan tail, dan head yang hanya sekedar filter biasa doankkkkkkhhh.

Biasanya enaknya ngabahas sesuatu itu diiringi dengan contoh, biar gak bosan dan tau implementasinya kayak gimana.

Setelah beberapa menit mikir sambil seruput kopi hangat, rasanya cocok untuk bahas soal nge cetak local ip di antarmuka terminal tercintaahh kalian, dengan menggunakan ifconfig di mac os, dan ip di linux.

Oke contoh yang pertama.

$ ifconfig
Enter fullscreen mode Exit fullscreen mode

Outputnya kayak dibawah ini nih

Screen Shot 2021-08-02 at 21.34.43

Nah kesel banget kan liat outputnya yang sebanyak itu.

Oke sekarang biar gak kesel kita akan kombinasikan perintah ifconfig dengan kawan - kawan filternya.

Screen Shot 2021-08-02 at 21.38.59

Nah sekarang gimana udah lumayan kan?, oke kita lanjut lagi buat nge filter biar terlihat lebih oke dan maknyus.

Screen Shot 2021-08-02 at 21.46.48

Nah, sekarang udah keren, nah selanjutnya jika butuh untuk nge filter baris kalian butuh tail atau head. karna gw mau tampilin local ip yang paling bawah maka gw pake tail, contohnya kayak gini.

ifconfig | grep inet | awk '{print $2}' | awk '$0 ~ /^[1-9]/{print $0}' | tail -n 1
Enter fullscreen mode Exit fullscreen mode

Hasilnya kayak gini.

172.16.10.4
Enter fullscreen mode Exit fullscreen mode

Nah sekarang udah oke, selanjutnya kita akan coba dengan perintah ip di mesin linux.

Oke bentar gw coba untuk ssh dulu ke mesin raspberry gw.

Screen Shot 2021-08-02 at 21.56.08

Yup, udah berhasil masuk, sekarang coba lagi buat masukin perintah ip a.

Screen Shot 2021-08-02 at 21.57.44

Oops... gimana kesel kan?

Oke sekarang kita filter lagi, kita coba untuk pakai grep dulu buat nge filter text dengan tulisan global, contohnya kayak gini.

Screen Shot 2021-08-02 at 22.00.28

Oh iya, yang karakter ini | artinya pipe, artinya akan di proses dari kiri ke kanan, jadinya kiri dulu baru ke kanan, yang ip a dulu hasilnya keluar baru lanjut ke perintah selanjutnya.

Oke kita lanjut lagi ya filternya, selanjutnya adalah bermain dengan awk lagi nih, buat ngambil kolom ke dua, di awk bisa pakai kayak gini awk '{print $2}' nah yang symbol dollar dua itu artinya kolom ke dua.

Screen Shot 2021-08-02 at 22.04.42

Nah, jadinya kayak gini, gimana mudah kan?

Selanjutnya cukup pakai head atau tail aja, karena tadi udah pake tail skarang kita pakai head buat ngambil list ip di awal, dannnnn....

Screen Shot 2021-08-02 at 22.06.21

taraaaaa...., mantap!

Discussion (4)

Collapse
arfanamd profile image
arfanamd

awk support untuk filtering teks berdasarkan pattern, jadi penggunaan grep disitu sepertinya ndak perlu.

One-liner versi yg lebih pendek:
ifconfig | awk '$2 ~ /^[0-9]{3}/ {print $2}'
ip a | awk '/global/ {print $2}'

Collapse
adiatma profile image
Adiatma Kamarudin Author

iya bisa, support conditional, filter, bisa definisiin column berdasarkan spesifik konten, dll.

Collapse
faultable profile image
Rizaldy

Cakep nih, jadi semangat buat berbagi tentang shell scripting juga!

Collapse
adiatma profile image
Adiatma Kamarudin Author

Mantap pak, mainan shell scripting emang seru, dan sengaja bikin catatan juga, jadinya nanti kalau lupa tinggal kesini aja... hehehe