Panduan Praktis Perintah awk Linux Lengkap

Gambaran Umum

Di lingkungan Linux, awk adalah alat yang paling andal saat memproses dan memfilter file teks berukuran besar atau data log secara efisien. Pelajari sintaks inti dan penggunaan praktisnya untuk mengekstrak kolom tertentu, memfilter berdasarkan kondisi, hingga menjumlahkan data hanya dengan satu baris perintah tanpa perlu menulis skrip yang rumit.

1. Prinsip Kerja Dasar awk dan Mengekstrak Kolom Tertentu

Untuk mempraktikkan perintah awk, buat file teks contoh yang berisi nama pengguna, ID, dan informasi pekerjaan yang dipisahkan oleh spasi.

cat « ‘EOF’ > sample_users.txt
user1 1001 Developer
user2 1002 Designer
user3 1003 Manager
EOF

Gunakan perintah awk untuk mengekstrak dan menampilkan bidang pertama ($1) yaitu nama pengguna dan bidang ketiga ($3) yaitu pekerjaan dari setiap baris file, menggunakan spasi sebagai pemisah.
Secara default, jika tidak ada pemisah khusus yang ditentukan, awk akan membagi bidang berdasarkan spasi atau tab berturut-turut.
⚙️ [Opsi Utama]

-F fs : Menentukan pemisah bidang input (Field Separator).
-v var=val : Menetapkan variabel dan nilai awal yang akan digunakan di dalam skrip awk sebelum eksekusi.
-f progfile : Menentukan jalur file tempat kode skrip awk ditulis untuk dieksekusi.

awk ‘{print $1, $3}’ sample_users.txt

Pada file /etc/passwd yang dipisahkan oleh titik dua (:), tentukan pemisah menggunakan opsi -F:, lalu ekstrak hanya bidang pertama ($1) yaitu nama akun dan bidang keenam ($6) yaitu jalur direktori home untuk memeriksa 5 baris pertama.

awk -F: ‘{print $1, $6}’ /etc/passwd | head -n 5

2. Memfilter Data Kustom Menggunakan Pernyataan Kondisional dan Operator

Buat file latihan server_resources.txt yang berisi data penggunaan CPU dan memori per server.

cat « ‘EOF’ > server_resources.txt
web-server 85 92
db-server 45 60
cache-server 92 40
backup-server 20 15
EOF

Pilih target yang penggunaan CPU-nya pada bidang kedua ($2) bernilai 80% atau lebih menggunakan ekspresi kondisional, lalu tampilkan nama server dan pesan peringatan.
Ini sangat berguna saat mengidentifikasi sumber daya sistem yang telah melebihi batas ambang (threshold).

awk ‘$2 >= 80 {print $1 " CPU 경고: " $2 “%”}’ server_resources.txt

Gunakan operator logika AND (&&) untuk memfilter dan menampilkan server berisiko yang penggunaan CPU ($2) dan memorinya ($3) sama-sama mencapai 80% atau lebih.
Dengan menerapkan kondisi majemuk, Anda hanya memilih target yang beberapa sumber dayanya melampaui ambang batas secara bersamaan.

awk ‘$2 >= 80 && $3 >= 80 {print “위험 서버: " $1}’ server_resources.txt

3. Statistik dan Penjumlahan Menggunakan Variabel Bawaan serta Blok BEGIN/END

Buat file contoh sales_data.txt yang berisi nama item dan nilai penjualan untuk mempraktikkan agregasi dan statistik data menggunakan awk.

cat « ‘EOF’ > sales_data.txt
Apple 5000
Banana 3000
Orange 4500
Grape 8000
EOF

Gunakan blok BEGIN untuk menampilkan pesan pembuka sebelum memproses isi teks, dan akumulasikan nilai bidang kedua ($2) dari setiap baris ke dalam variabel sum.
Pada blok END yang dijalankan setelah semua baris file diproses, hitung dan tampilkan total penjualan serta rata-rata penjualan menggunakan variabel bawaan NR (jumlah total rekaman).

awk ‘BEGIN {print “— 매출 집계 시작 —”} {sum += $2; print $1 “: " $2} END {print “——————-”; print “총 매출: " sum “원”; print “평균 매출: " sum/NR “원”}’ sales_data.txt

4. Analisis Log Server Web Praktis dan Memfilter Lalu Lintas Tidak Normal

Buat file log contoh access.log dalam format standar Nginx dan Apache untuk mempraktikkan analisis log server web dan pelacakan error.

cat « ‘EOF’ > access.log
192.168.1.10 - - [10/Oct/2026:10:00:01] “GET /index.html” 200 4502
192.168.1.11 - - [10/Oct/2026:10:00:02] “POST /login” 401 1024
192.168.1.12 - - [10/Oct/2026:10:00:03] “GET /api/data” 500 2048
192.168.1.10 - - [10/Oct/2026:10:00:04] “GET /dashboard” 200 8920
192.168.1.13 - - [10/Oct/2026:10:00:05] “POST /login” 401 1024
EOF

Gunakan operator pencocokan ekspresi reguler (~) untuk memfilter baris error klien 4xx dan error server 5xx yang bidang kesembilannya ($9), yaitu kode status HTTP, dimulai dengan angka 4 atau 5.
Ekstrak hanya IP pengakses ($1), URI permintaan ($7), dan kode status ($9) dari log yang memenuhi kondisi untuk memeriksa status insiden dan lalu lintas abnormal secara cepat.

awk ‘$9 ~ /^[45]/ {print $1, $7, $9}’ access.log

Gunakan associative array pada awk (ip[$1]++) untuk menghitung jumlah permintaan per IP pengakses, tampilkan jumlah akumulasi keseluruhan dengan loop di blok END, lalu urutkan berdasarkan frekuensi permintaan tertinggi menggunakan pipeline sort -rn.
Ini adalah teknik analisis praktis untuk mengidentifikasi lalu lintas berlebih atau upaya akses mencurigakan dari IP tertentu.

awk ‘{ip[$1]++} END {for (i in ip) print ip[i], i}’ access.log | sort -rn

Demikian pembahasan singkat mengenai sintaks dasar dan contoh-contoh praktis utama perintah awk, yang mempermudah pemrosesan teks dan analisis log berukuran besar di lingkungan Linux.
Terapkan berbagai opsi dan pola yang dibahas hari ini ke dalam pekerjaan nyata Anda untuk mengotomatiskan tugas ekstraksi dan manipulasi data berulang secara jauh lebih efisien.