awk

Cara Menggunakan AWK di Linux

Cara Menggunakan AWK di Linux

Utilitas yang ditawarkan Linux sering mengikuti filosofi desain UNIXX. Alat apa pun harus berukuran kecil, menggunakan teks biasa untuk I/O, dan beroperasi secara modular. Berkat warisannya, kami memiliki beberapa fungsi pemrosesan teks terbaik dengan bantuan alat seperti sed dan awk.

Di Linux, alat awk sudah diinstal sebelumnya di semua distro Linux. AWK sendiri adalah bahasa pemrograman. Alat AWK hanyalah juru bahasa pemrograman AWK. Dalam panduan ini, lihat cara menggunakan AWK di Linux.

penggunaan AWK

Alat AWK paling berguna ketika teks diatur dalam format yang dapat diprediksi. Ini cukup bagus dalam mem-parsing dan memanipulasi data tabular. Ini beroperasi berdasarkan baris demi baris, di seluruh file teks.

Perilaku default awk adalah menggunakan spasi putih (spasi, tab, dll.) untuk memisahkan bidang. Untungnya, banyak file konfigurasi di Linux mengikuti pola ini.

Sintaks dasar

Ini adalah bagaimana struktur perintah awk terlihat.

$ aw '// ; ; '

Bagian dari perintah cukup jelas. Awk dapat beroperasi tanpa bagian pencarian atau tindakan. Jika tidak ada yang ditentukan, maka tindakan default pada pertandingan hanya akan dicetak. Pada dasarnya, awk akan mencetak semua kecocokan yang ditemukan pada file.

Jika tidak ada pola pencarian yang ditentukan, maka awk akan melakukan tindakan yang ditentukan pada setiap baris file.

Jika kedua bagian diberikan, maka awk akan menggunakan pola untuk menentukan apakah garis saat ini mencerminkannya. Jika cocok, maka awk melakukan tindakan yang ditentukan.

Perhatikan bahwa awk juga dapat bekerja pada teks yang dialihkan. Ini dapat dicapai dengan menyalurkan isi perintah ke awk untuk ditindaklanjuti. Pelajari lebih lanjut tentang perintah pipa Linux.

Untuk tujuan demo, berikut adalah contoh file teks. Ini berisi 10 baris, 2 kata per baris.

$ sampel kucing.txt

Ekspresi reguler

Salah satu fitur utama yang menjadikan awk alat yang ampuh adalah dukungan ekspresi reguler (singkatnya regex). Ekspresi reguler adalah string yang mewakili pola karakter tertentu.

Berikut daftar beberapa sintaks ekspresi reguler yang paling umum. Sintaks regex ini tidak hanya unik untuk awk. Ini adalah sintaksis regex yang hampir universal, jadi menguasainya juga akan membantu dalam aplikasi/pemrograman lain yang melibatkan ekspresi reguler.

  • Karakter dasar: Semua karakter alfanumerik menggarisbawahi (_) dll.
    • Kumpulan karakter: Untuk mempermudah, ada grup karakter di regex. Misalnya, huruf besar (A-Z), huruf kecil (a-z), dan angka numerik (0-9).
  • Meta-karakter: Ini adalah karakter yang menjelaskan berbagai cara untuk memperluas karakter biasa.
    • Titik (.): Kecocokan karakter apa pun di posisi itu valid (kecuali baris baru).
    • Tanda bintang (*): Nol atau lebih keberadaan karakter langsung sebelum itu valid.
    • Tanda kurung ([]): Pencocokan valid jika, pada posisi, salah satu karakter dari tanda kurung cocok. Itu dapat dikombinasikan dengan set karakter.
    • tanda sisipan (^): Pertandingan harus di awal garis.
    • Dolar ($): Pertandingan harus di akhir baris.
    • Garis miring terbalik (\): Jika ada meta-karakter harus digunakan dalam arti harfiah liter.

Mencetak teks

Untuk mencetak semua isi file teks, gunakan perintah print. Dalam hal pola pencarian, tidak ada pola yang ditentukan. Jadi, awk mencetak semua baris.

$ awk 'print' sampel.txt

Di sini, "cetak" adalah perintah AWK yang mencetak konten input.

Pencarian string

AWK dapat melakukan pencarian teks dasar pada teks yang diberikan. Di bagian pola, itu harus berupa teks untuk ditemukan.

Pada perintah berikut, awk akan mencari teks “quick” pada semua baris sampel file.txt.

$ awk '/quick/' sampel.txt

Sekarang, mari gunakan beberapa ekspresi reguler untuk menyempurnakan pencarian lebih lanjut. Perintah berikut akan mencetak semua baris yang memiliki "coklat" di awal.

$ awk '/^brown/' sampel.txt

Bagaimana kalau menemukan sesuatu di akhir baris?? Perintah berikut akan mencetak semua baris yang memiliki "cepat" di akhir.

$ awk '/quick$/' sampel.txt

Pola kartu liar

Contoh berikutnya akan menunjukkan penggunaan tanda sisipan (.). Di sini, bisa ada dua karakter sebelum karakter "e".

$ awk '/… e/'  sampel.txt

Pola kartu liar (menggunakan tanda bintang)

Bagaimana jika ada sejumlah karakter di lokasi?? Untuk mencocokkan setiap karakter yang mungkin pada posisi tersebut, gunakan tanda bintang (*). Di sini, AWK akan mencocokkan semua baris yang memiliki jumlah karakter berapa pun setelah "the".

$ awk '/the*/' sampel.txt

Ekspresi tanda kurung

Contoh berikut akan menunjukkan bagaimana menggunakan ekspresi braket. Ekspresi tanda kurung mengatakan bahwa di lokasi, kecocokan akan valid jika cocok dengan kumpulan karakter yang diapit tanda kurung. Misalnya, perintah berikut akan mencocokkan "The" dan "Tee" sebagai kecocokan yang valid.

$ awk '/T[he]e/' sampel.txt

Ada beberapa set karakter yang telah ditentukan sebelumnya dalam ekspresi reguler. Misalnya, himpunan semua huruf besar diberi label sebagai "A-Z". Dalam perintah berikut, awk akan mencocokkan semua kata yang mengandung huruf besar.

$ awk '/[A-Z]/' sampel.txt

Lihatlah penggunaan set karakter berikut dengan ekspresi braket.

  • [0-9]: Menunjukkan satu digit
  • [a-z]: Menunjukkan satu huruf kecil
  • [A-Z]: Menunjukkan satu huruf besar
  • [a-zA-z]: Menunjukkan satu huruf
  • [a-zA-z 0-9]: Menunjukkan satu karakter atau digit.

Awk variabel yang telah ditentukan sebelumnya

AWK hadir dengan banyak variabel yang telah ditentukan sebelumnya dan otomatis. Variabel-variabel ini dapat mempermudah penulisan program dan skrip dengan AWK.

Berikut adalah beberapa variabel AWK paling umum yang akan Anda temui.

  • NAMA FILE: Nama file dari file input saat ini.
  • RS: Pemisah rekaman. Karena sifat AWK, ia memproses data satu catatan pada satu waktu. Di sini, variabel ini menentukan pembatas yang digunakan untuk membagi aliran data menjadi catatan. Secara default, nilai ini adalah karakter baris baru.
  • NR: Nomor catatan input saat ini. Jika nilai RS diatur ke default, maka nilai ini akan menunjukkan nomor baris input saat ini.
  • FS/OFS: Karakter yang digunakan sebagai pemisah bidang. Setelah dibaca, AWK membagi catatan menjadi bidang yang berbeda. Pembatas ditentukan oleh nilai FS. Saat mencetak, AWK bergabung kembali dengan semua bidang. Namun, saat ini, AWK menggunakan pemisah OFS bukan pemisah FS. Secara umum, baik FS dan OFS sama tetapi tidak wajib demikian to.
  • NF: Jumlah bidang dalam catatan saat ini. Jika nilai default "spasi" digunakan, maka itu akan cocok dengan jumlah kata dalam catatan saat ini.
  • oralit: Pemisah rekaman untuk data keluaran. Nilai default adalah karakter baris baru new.

Mari kita periksa mereka beraksi. Perintah berikut akan menggunakan variabel NR untuk mencetak baris 2 ke baris 4 dari sampel.txt. AWK juga mendukung operator logika seperti logika dan (&&).

$ awk 'NR > 1 && NR < 5' sample.txt

Untuk menetapkan nilai tertentu ke variabel AWK, gunakan struktur berikut:.

$ aw '// ; ; ' =,

Misalnya, untuk menghapus semua baris kosong dari file input, ubah nilai RS menjadi nol. Ini adalah trik yang menggunakan aturan POSIX yang tidak jelas. Ini menentukan bahwa jika nilai RS adalah string kosong, maka catatan dipisahkan oleh urutan yang terdiri dari baris baru dengan satu atau lebih baris kosong. Di POSIX, baris kosong tanpa konten benar-benar kosong. Namun, jika baris berisi spasi putih, maka itu tidak dianggap "kosong".

$ awk 'print' RS=" contoh.txt

Sumber daya tambahan

AWK adalah alat yang ampuh dengan banyak fitur. Meskipun panduan ini mencakup banyak dari mereka, itu masih hanya dasar-dasarnya. Menguasai AWK akan membutuhkan lebih dari sekedar ini. Panduan ini harus menjadi pengantar yang bagus untuk alat ini.

Jika Anda benar-benar ingin menguasai alat ini, berikut adalah beberapa sumber daya tambahan yang harus Anda periksa.

  • Pangkas spasi putih
  • Menggunakan pernyataan bersyarat
  • Cetak berbagai kolom
  • Regex dengan AWK
  • 20 contoh AWK

Internet adalah tempat yang cukup bagus untuk mempelajari sesuatu. Ada banyak tutorial mengagumkan tentang dasar-dasar AWK untuk pengguna tingkat lanjut.

Pikiran terakhir

Semoga panduan ini membantu memberikan pemahaman yang baik tentang dasar-dasar AWK. Meskipun mungkin perlu beberapa saat, menguasai AWK sangat bermanfaat dalam hal kekuatan yang diberikannya.

Selamat berkomputasi!

Cara Mengembangkan Game di Linux
Satu dekade yang lalu, tidak banyak pengguna Linux yang memprediksi bahwa sistem operasi favorit mereka suatu hari nanti akan menjadi platform game po...
Port Sumber Terbuka dari Mesin Game Komersial
Rekreasi mesin game gratis, open source, dan lintas platform dapat digunakan untuk bermain lama serta beberapa judul game yang cukup baru. Artikel ini...
Game Baris Perintah Terbaik untuk Linux
Baris perintah bukan hanya sekutu terbesar Anda saat menggunakan Linux-ini juga dapat menjadi sumber hiburan karena Anda dapat menggunakannya untuk me...