GNU/Linux >> Belajar Linux >  >> Linux

Perintah AWK di Linux dengan Contoh

Pendahuluan

awk command adalah alat Linux dan bahasa pemrograman yang memungkinkan pengguna untuk memproses dan memanipulasi data dan menghasilkan laporan yang diformat. Alat ini mendukung berbagai operasi untuk pemrosesan teks tingkat lanjut dan memfasilitasi ekspresi pemilihan data yang kompleks.

Dalam tutorial ini, Anda akan mempelajari apa yang awk perintah yang dilakukan dan cara menggunakannya.

Prasyarat

  • Sistem yang menjalankan Linux.
  • Akses ke jendela terminal.

Sintaks Perintah AWK

Sintaks untuk awk perintahnya adalah:

awk [options] 'selection_criteria {action}' input-file > output-file

Opsi yang tersedia adalah:

Opsi Deskripsi
-F [separator] Digunakan untuk menentukan pemisah file. Pemisah default adalah ruang kosong.
-f [filename] Digunakan untuk menentukan file yang berisi awk naskah. Membaca awk sumber program dari file yang ditentukan, bukan argumen baris perintah pertama.
-v Digunakan untuk menetapkan variabel.

Bagaimana Cara Kerja Perintah AWK?

awk tujuan utama perintah adalah untuk membuat penemuan informasi dan manipulasi teks mudah dilakukan di Linux. Perintah ini bekerja dengan memindai satu set baris input secara berurutan dan mencari baris yang cocok dengan pola yang ditentukan oleh pengguna.

Untuk setiap pola, pengguna dapat menentukan tindakan yang akan dilakukan pada setiap baris yang cocok dengan pola yang ditentukan. Jadi, menggunakan awk , pengguna dapat dengan mudah memproses file log yang kompleks dan menghasilkan laporan yang dapat dibaca.

Operasi AWK

awk memungkinkan pengguna untuk melakukan berbagai operasi pada file input atau teks. Beberapa operasi yang tersedia adalah:

  • Memindai file baris demi baris.
  • Pisahkan baris/file input menjadi beberapa bidang.
  • Bandingkan baris atau bidang input dengan pola yang ditentukan.
  • Lakukan berbagai tindakan pada baris yang cocok.
  • Format baris keluaran.
  • Melakukan operasi aritmatika dan string.
  • Gunakan aliran kontrol dan loop pada output.
  • Ubah file dan data sesuai dengan struktur yang ditentukan.
  • Buat laporan berformat.

Pernyataan Awk

Perintah tersebut menyediakan pernyataan aliran kontrol dasar (if-else , while , for , break ) dan juga memungkinkan pengguna untuk mengelompokkan pernyataan menggunakan kurung kurawal {} .

  • jika-lain

if-else pernyataan bekerja dengan mengevaluasi kondisi yang ditentukan dalam tanda kurung dan, jika kondisinya benar, pernyataan mengikuti if pernyataan dijalankan. else bagian adalah opsional.

Misalnya:

awk -F ',' '{if($2==$3){print $1","$2","$3} else {print "No Duplicates"}}' answers.txt

Output menunjukkan baris di mana duplikat ada dan menyatakan Tidak ada duplikat jika tidak ada jawaban duplikat di baris.

  • sementara

while pernyataan berulang kali mengeksekusi pernyataan target selama kondisi yang ditentukan benar. Itu berarti ia beroperasi seperti yang ada di bahasa pemrograman C. Jika kondisinya benar, badan perulangan akan dieksekusi. Jika kondisinya salah, awk melanjutkan eksekusi.

Misalnya, pernyataan berikut menginstruksikan awk untuk mencetak semua kolom input satu per baris:

awk '{i=0; while(i<=NF) { print i ":"$i; i++;}}' employees.txt
  • untuk

for pernyataan juga berfungsi seperti C, memungkinkan pengguna membuat loop yang perlu dieksekusi beberapa kali.

Misalnya:

awk 'BEGIN{for(i=1; i<=10; i++) print "The square of", i, "is", i*i;}'

Pernyataan di atas meningkatkan nilai i per satu sampai mencapai sepuluh dan menghitung kuadrat dari i setiap kali.

  • istirahat

break pernyataan segera keluar dari while . terlampir atau for . Untuk memulai iterasi berikutnya, gunakan continue pernyataan.

next pernyataan menginstruksikan awk untuk melompat ke rekaman berikutnya dan mulai memindai pola dari atas. exit pernyataan menginstruksikan awk bahwa input telah berakhir.

Berikut adalah contoh break pernyataan:

awk 'BEGIN{x=1; while(1) {print "Example"; if ( x==5 ) break; x++; }}'

Perintah di atas memutus loop setelah 5 iterasi.

Pola AWK

Menyisipkan pola di depan tindakan di awk bertindak sebagai pemilih . Pemilih menentukan apakah akan melakukan suatu tindakan atau tidak. Ekspresi berikut dapat berfungsi sebagai pola:

  • Ekspresi reguler.
  • Ekspresi relasional aritmatika.
  • Ekspresi bernilai string.
  • Kombinasi Boolean arbitrer dari ekspresi di atas.

Bagian berikut menjelaskan ekspresi yang disebutkan di atas dan cara menggunakannya.

Pola Ekspresi Reguler

Pola ekspresi reguler adalah bentuk ekspresi paling sederhana yang berisi string karakter yang diapit garis miring. Bisa berupa urutan huruf, angka, atau kombinasi keduanya.

Dalam contoh berikut, program mengeluarkan semua baris yang dimulai dengan "A". Jika string yang ditentukan adalah bagian dari kata yang lebih besar, itu juga dicetak.

awk '$1 ~ /^A/ {print $0}' employees.txt

Pola Ekspresi Relasional

Jenis lain dari awk pola adalah pola ekspresi relasional. Pola ekspresi relasional melibatkan penggunaan salah satu operator relasional berikut:<, <=, ==, !=,>= , dan > .

Berikut ini adalah contoh dari awk ekspresi relasional:

awk 'BEGIN { a = 10; b = 10; if (a == b) print "a == b" }'

Pola Rentang

Pola rentang adalah pola yang terdiri dari dua pola dipisahkan dengan koma. Pola rentang melakukan tindakan yang ditentukan untuk setiap baris antara kemunculan pola satu dan pola dua.

Misalnya:

awk '/clerk/, /manager/ {print $1, $2}' employees.txt

Pola di atas menginstruksikan awk untuk mencetak semua baris input yang mengandung kata kunci "petugas" dan "manajer".

Pola Ekspresi Khusus

Pola ekspresi khusus termasuk BEGIN dan END yang menunjukkan inisialisasi dan akhir program. BEGIN pattern cocok dengan awal input, sebelum record pertama diproses. END pattern cocok dengan akhir input, setelah record terakhir diproses.

Misalnya, Anda dapat menginstruksikan awk untuk menampilkan pesan di awal dan di akhir proses:

awk 'BEGIN { print "List of debtors:" }; {print $1, $2}; END {print "End of the debtor list"}' debtors.txt

Menggabungkan Pola

awk perintah memungkinkan pengguna untuk menggabungkan dua atau lebih pola menggunakan operator logika. Pola gabungan dapat berupa kombinasi pola Boolean apa pun. Operator logika untuk menggabungkan pola adalah:

  • || (atau)
  • && (dan)
  • ! (tidak)

Misalnya:

awk '$3 > 10 && $4 < 20 {print $1, $2}' employees.txt 

Output mencetak bidang pertama dan kedua dari catatan yang bidang ketiganya lebih besar dari sepuluh dan bidang keempat kurang dari 20.

Variabel AWK

awk perintah memiliki variabel bidang bawaan, yang memecah file input menjadi bagian-bagian terpisah yang disebut bidang . awk menetapkan variabel berikut untuk setiap bidang data:

  • $0 . Digunakan untuk menentukan seluruh baris.
  • $1 . Menentukan bidang pertama.
  • $2 . Menentukan bidang kedua.
  • dst.

awk bawaan lain yang tersedia variabelnya adalah:

  • NR . Menghitung jumlah record input (biasanya baris). awk perintah melakukan pernyataan pola/tindakan sekali untuk setiap catatan dalam file.

Misalnya:

awk '{print NR,$0}' employees.txt

Perintah menampilkan nomor baris dalam output.

  • NF . Menghitung jumlah kolom dalam catatan input saat ini dan menampilkan kolom terakhir dari file.

Misalnya:

awk '{print $NF}' employees.txt
  • FS . Berisi karakter yang digunakan untuk membagi bidang pada baris input. Pemisah default adalah spasi, tetapi Anda dapat menggunakan FS untuk menetapkan ulang pemisah ke karakter lain (biasanya di BEGIN ).

Misalnya, Anda dapat membuat etc/passwd file (daftar pengguna) lebih mudah dibaca dengan mengubah pemisah dari titik dua (: ) ke tanda hubung (/ ) dan cetak juga pemisah bidang:

awk -FS 'BEGIN{FS=":"; OFS="-"} {print $0}' /etc/passwd
  • RS . Menyimpan karakter pemisah rekaman saat ini. Baris input default adalah record input, yang menjadikan baris baru sebagai pemisah record default. Perintah ini berguna jika inputnya adalah file yang dipisahkan koma (CSV).

Misalnya:

awk 'BEGIN {FS="-"; RS=","; OFS=" owes Rs. "} {print $1,$2}' debtors.txt
  • OFS . Menyimpan pemisah bidang keluaran, yang memisahkan bidang saat dicetak. Pemisah default adalah ruang kosong. Setiap kali file yang dicetak memiliki beberapa parameter yang dipisahkan dengan koma, OFS nilai dicetak di antara setiap parameter.

Misalnya:

awk 'OFS=" works as " {print $1,$3}' employees.txt

Tindakan AWK

awk alat mengikuti aturan yang berisi pasangan pola-tindakan. Tindakan terdiri dari pernyataan yang diapit kurung kurawal {} yang berisi ekspresi, pernyataan kontrol, pernyataan majemuk, pernyataan input dan output, dan pernyataan penghapusan. Pernyataan tersebut dijelaskan pada bagian di atas.

Buat awk skrip menggunakan sintaks berikut:

awk '{action}' 

Misalnya:

awk '{print "How to use the awk command"}'

Perintah sederhana ini menginstruksikan awk untuk mencetak string yang ditentukan setiap kali Anda menjalankan perintah. Hentikan program menggunakan Ctrl+D .

Cara Menggunakan Perintah AWK - Contoh

Selain memanipulasi data dan menghasilkan keluaran berformat, awk memiliki kegunaan lain karena merupakan bahasa scripting dan tidak hanya perintah pemrosesan teks. Bagian ini menjelaskan kasus penggunaan alternatif untuk awk .

  • Perhitungan . awk perintah memungkinkan Anda untuk melakukan perhitungan aritmatika. Misalnya:
df | awk '/\/dev\/loop/ {print $1"\t"$2 + $3}'

Dalam contoh ini, kami menyalurkan ke perintah df dan menggunakan informasi yang dihasilkan dalam laporan untuk menghitung total memori yang tersedia dan digunakan oleh sistem file terpasang yang hanya berisi /dev dan /loop dalam nama.

Laporan yang dihasilkan menunjukkan jumlah memori /dev dan /loop filesystem di kolom dua dan tiga di df keluaran.

  • Pemfilteran . awk perintah memungkinkan Anda untuk memfilter output dengan membatasi panjang garis. Misalnya:
awk 'length($0) > 8' /etc/shells

Dalam contoh ini, kami menjalankan /etc/shells file sistem melalui awk dan memfilter output agar hanya berisi baris yang berisi lebih dari 8 karakter.

  • Pemantauan . Periksa apakah proses tertentu sedang berjalan di Linux dengan menyalurkan ke ps memerintah. Misalnya:
ps -ef | awk '{ if($NF == "clipboard") print $0}'

Output mencetak daftar semua proses yang berjalan pada mesin Anda dengan bidang terakhir yang cocok dengan pola yang ditentukan.

  • Menghitung . Anda dapat menggunakan awk untuk menghitung jumlah karakter dalam satu baris dan mendapatkan nomor yang dicetak dalam hasilnya. Misalnya:
awk '{ print "The number of characters in line", NR,"=" length($0) }' employees.txt

Linux
  1. Perintah Tee Linux dengan Contoh

  2. Perintah kepala Linux dengan Contoh

  3. Perintah JQ di Linux dengan Contoh

  1. Perintah wc Linux dengan Contoh

  2. Perintah sortir Linux dengan Contoh

  3. Perintah Echo di Linux (Dengan Contoh)

  1. Perintah man di Linux dengan Contoh

  2. Perintah Curl di Linux dengan Contoh

  3. Perintah Gema di Linux dengan Contoh