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
Outputnya kayak dibawah ini nih
Nah kesel banget kan liat outputnya yang sebanyak itu.
Oke sekarang biar gak kesel kita akan kombinasikan perintah ifconfig
dengan kawan - kawan filternya.
Nah sekarang gimana udah lumayan kan?, oke kita lanjut lagi buat nge filter biar terlihat lebih oke dan maknyus.
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
Hasilnya kayak gini.
172.16.10.4
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.
Yup, udah berhasil masuk, sekarang coba lagi buat masukin perintah ip a
.
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.
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.
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....
taraaaaa...., mantap!
Top comments (4)
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}'
iya bisa, support conditional, filter, bisa definisiin column berdasarkan spesifik konten, dll.
Cakep nih, jadi semangat buat berbagi tentang shell scripting juga!
Mantap pak, mainan shell scripting emang seru, dan sengaja bikin catatan juga, jadinya nanti kalau lupa tinggal kesini aja... hehehe