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.

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.

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.

2. Memfilter Data Kustom Menggunakan Pernyataan Kondisional dan Operator
Buat file latihan server_resources.txt yang berisi data penggunaan CPU dan memori per server.

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).

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.

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.

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).

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](/ubuntu/20261008_014637_7/captures/s04_c01_cat_____EOF____access_log_192_168_1_10_-_-__10_Oct.png)
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](/ubuntu/20261008_014637_7/captures/s04_c02_awk___9______45____print__1___7___9___access_log.png)
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](/ubuntu/20261008_014637_7/captures/s04_c03_awk___ip__1_____END__for__i_in_ip__print_ip_i___i.png)
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.