NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
ID

Perintah Linux & Keterampilan Shell

awk: Saat Kolom Menjadi Program

awk adalah apa yang Anda capai ketika kolom menjadi unit kerja: log akses nginx, /etc/passwd, keluaran df, apa pun yang ada di bidang. Ini adalah bahasa lengkap (variabel, array, aritmatika, aturan tindakan pola) yang memakai pakaian satu baris, yang merupakan penyamaran yang tepat untuk forensik log. Batasan jujurnya: apa pun yang dilakukan awk dengan nyaman adalah satu baris, dan apa pun yang memerlukan halaman blok adalah skrip Python yang belum mengakui dirinya sendiri.

Poin Utama

  • Pemisahan bidang adalah trik inti: awk -F: '$3 >= 1000 {print $1}' /etc/passwd mencantumkan pengguna sebenarnya, dan -F'[,|]' menangani pembatas multi-karakter ketika cut sudah menyerah.
  • Hitung dengan array asosiatif: awk '{count[$1]++} END {for (c in count) print count[c], c}' /var/log/secure mengubah log apa pun menjadi tabel frekuensi dalam satu baris.
  • Pertanyaan file jawaban NR dan NF: 'NR==1' adalah baris header, '{print NF}' menghitung kolom per baris, dan membandingkan NR dengan nilai tersimpan file lain akan menemukan duplikat dan celah.
  • Ekstrak kecocokan plus adalah makanan sehari-hari: awk '/ 500 / {print $7, $9}' access.log menarik halaman kesalahan dengan URL, dan OFS memungkinkan Anda mencetak ulang $0 setelah mengedit satu bidang tanpa menulis ulang baris itu sendiri.
  • Blok BEGIN dan END adalah tempat kerja agregat dilakukan: BEGIN menetapkan pemisah, aturan tengah dijalankan per baris, END mencetak total; tiga blok terbaca dengan baik, lima adalah skrip yang menyamar.
  • Mengutip adalah musuh sesungguhnya dari shell one-liners: kutip tunggal programnya, kutip ganda literal di dalamnya, dan ingat bahwa $7 di dalam string shell kutip ganda tidak pernah mencapai awk sama sekali.
  • Pekerjaan numerik mendapat LC_ALL=C: koma lokal dalam angka dan susunan ganjil mengubah perbandingan dan mengurutkan ke samping, dan menyematkan lokal adalah satu baris yang menghemat waktu sore.
  • Ketahui batasannya: koma yang dikutip di dalam CSV, JSON bersarang, atau format multiline stateful masuk ke Python; awk adalah pisau bedah dan tetap satu.

Catatan Lapangan

Satu baris awk yang menjumlahkan kolom dolar dari log dengan koma lokal menghasilkan angka yang tidak dipertanyakan siapa pun sampai bagian akuntansi membuka laporan. LC_ALL=C pindah ke perpustakaan alias kami minggu itu dan tetap tinggal.

Pertanyaan Umum

awk atau cut untuk pekerjaan kolom?

dipotong untuk satu pemisah tetap dan daftar kolom polos; awk saat kondisi, regex, aritmatika, atau agregat muncul, yang mana titik pemotongan berada di luar jangkauannya.

Bagaimana cara menjumlahkan atau merata-ratakan suatu kolom?

Agregat di END: awk '{s += $5} END {print s, s/NR}' menambahkan dan rata-rata bidang lima di seluruh baris; hapus pemisah ribuan terlebih dahulu jika suatu lokal memasukkan koma ke dalam angka.

Mengapa awk one-liner saya berperilaku berbeda di macOS?

macOS mengirimkan POSIX awk tanpa ekstensi GNU seperti -i inplace atau gensub; skrip yang berjalan di Linux bisa gagal secara diam-diam di sana, jadi simpanlah satu baris berbentuk POSIX atau bawalah melongo.

Bisakah awk mengurai JSON?

Tidak berarti: JSON tidak memiliki struktur kolom yang dipahami awk dan peretasan regex merusak objek bersarang. Gunakan jq, yang merupakan bentuk awk untuk JSON, atau modul json Python saat pekerjaan bertambah.

Bagaimana Kinetikatech membantu dengan perintah linux & keterampilan shell

Usahanya sederhana: Perintah dan kebiasaan skrip yang menentukan apakah administrator mengoperasikan server atau melawannya: mencari, mengubah, mentransfer, dan mengawasi teks dan proses dengan alat yang ada di setiap instalasi dasar. Serahkan pada layanan kami Keamanan Server Linux dan Manajemen Server dan Anda terlindungi: dievaluasi menyeluruh, diimplementasikan rapi, dipantau 24 jam.

Bicara dengan seorang insinyur

Masalah server? Situs diretas? Website lambat?

Masalah kritis dijawab dalam 30 menit — 24 jam sehari, 7 hari seminggu.

Minta Dukungan Darurat support@kinetikatech.com