GNU/Linux >> Belajar Linux >  >> Linux

gawk Perintah Linux Dengan Contoh

Pendahuluan

gawk perintah adalah versi GNU dari awk. Gawk adalah alat pemrosesan teks dan manipulasi data yang kuat dengan banyak fitur dan kegunaan praktis.

Panduan ini akan mengajari Anda cara menggunakan gawk Linux perintah dengan contoh.

Prasyarat

  • Sistem yang menjalankan Linux.
  • Akses ke terminal.
  • Berkas teks. Tutorial ini menggunakan file orang sebagai contoh.

melihat Sintaks Perintah Linux

Dasar gawk sintaks terlihat seperti ini:

gawk [options] [actions/filters] input_file

Perintah tidak dapat dijalankan tanpa argumen apa pun. Opsi ini tidak wajib, tetapi untuk gawk untuk menghasilkan output, setidaknya satu tindakan harus ditetapkan. Tindakan dan filter adalah subperintah dan kriteria pemilihan berbeda yang mengaktifkan gawk untuk memanipulasi data dari file input.

Catatan :Bungkus opsi dan tindakan dalam tanda kutip tunggal.

Opsi melongo

gawk command adalah alat serbaguna berkat banyak argumennya. Dengan gawk menjadi implementasi GNU dari awk , panjang, opsi gaya GNU tersedia. Setiap opsi panjang memiliki opsi pendek yang sesuai.

Opsi umum disajikan di bawah ini:

Opsi Deskripsi
-f program-file , --file program-file Membaca perintah dari file, yang berfungsi sebagai skrip, bukan argumen pertama di terminal.
-F fs , --field-separator fs Menggunakan variabel standar fs sebagai pemisah kolom input.
-v var=val , --assign var=val Menetapkan nilai ke variabel sebelum menjalankan skrip.
-b , --characters-as-bytes Memperlakukan semua data sebagai karakter bita tunggal.
-c , --traditional Mengeksekusi gawk dalam mode kompatibilitas.
-C , --copyright Menampilkan pesan Hak Cipta GNU.
-d[file] , --dump-variables[=file] Menampilkan daftar variabel, tipenya, dan nilainya.
-e program-text , --source program-text Memungkinkan pencampuran fungsi perpustakaan dan kode sumber.
-E file , --exec file Menonaktifkan penetapan variabel terminal.
-L [value] , --lint[=value] Mencetak pesan peringatan tentang kode yang tidak portabel ke implementasi AWK lainnya.
-S , --sandbox Menjalankan gawk dalam mode kotak pasir.

Variabel Bawaan melongo

gawk command menawarkan beberapa variabel bawaan yang digunakan untuk menyimpan dan menambah nilai pada perintah. Variabel dimanipulasi dari terminal dan hanya mempengaruhi program ketika pengguna memberikan nilai kepada mereka. Beberapa gawk important penting variabel bawaan adalah:

Variabel Deskripsi
ARGC Menampilkan jumlah argumen terminal.
ARGIND Menampilkan indeks file ARGV.
ARGV Menyajikan array argumen terminal.
ERRNO Berisi string yang menjelaskan kesalahan sistem.
FIELDWIDTHS Menampilkan daftar lebar bidang yang dipisahkan spasi.
FILENAME Mencetak nama file input.
FNR Menampilkan nomor catatan masukan.
FS Mewakili pemisah kolom input.
IGNORECASE Mengaktifkan atau menonaktifkan penelusuran peka huruf besar-kecil.
NF Mencetak jumlah kolom file input.
NR Mencetak jumlah baris file saat ini.
OFS Menampilkan pemisah bidang keluaran.
ORS Menampilkan pemisah catatan keluaran.
RS Mencetak pemisah catatan masukan.
RSTART Mewakili indeks karakter pertama yang cocok.
RLENGTH Mewakili panjang string yang cocok.

Contoh melongo

Penggunaan gawk pencocokan pola dan fungsi pemrosesan bahasa sangat luas. Artikel ini bertujuan untuk memberikan contoh praktis di mana pengguna belajar menggunakan utilitas gawk.

Penting: gawk perintah peka huruf besar-kecil. Gunakan IGNORECASE variabel untuk mengabaikan kasus.

Cetak File

Secara default, gawk dengan print argumen menampilkan setiap baris dari file yang ditentukan. Misalnya, menjalankan perintah cat pada orang file teks mencetak yang berikut:

gawk perintah menampilkan hasil yang sama:

gawk '{print}' people

Cetak Kolom

Dalam file teks, spasi biasanya digunakan sebagai pembatas kolom. orang file terdiri dari empat kolom:

  1. Bilangan urut.
  2. Nama depan.
  3. Nama belakang.
  4. Tahun lahir.

Gunakan gawk untuk hanya menampilkan kolom tertentu di terminal. Misalnya:

gawk '{print $2}' people

Perintah hanya mencetak kolom kedua. Untuk mencetak beberapa kolom, seperti kolom satu (nomor urut) dan kolom dua (nama depan), jalankan:

gawk '{print $1, $2}' people

gawk perintah juga berfungsi tanpa koma di antara $1 dan $2 . Namun, tidak ada spasi antar kolom dalam output:

gawk '{print $1 $2}' people

Filter Kolom

gawk perintah menawarkan opsi penyaringan tambahan. Misalnya, garis cetak yang berisi huruf kapital O dengan:

gawk '/O/ {print}' people

Untuk menampilkan hanya baris yang berisi huruf O atau A , gunakan perpipaan:

gawk '/O|A/ {print}' people

Perintah mencetak baris apa pun yang menyertakan kata dengan huruf kapital O atau A . Di sisi lain, gunakan logika DAN (&& ) untuk menampilkan baris termasuk keduanya O dan tahun 1995 :

gawk '/O/ && /1995/' people

Filter bekerja dengan angka juga. Misalnya, hanya tampilkan orang yang lahir pada tahun 1990-an dengan:

gawk '/199*/ {print}' people

Output hanya menampilkan baris di mana kolom keempat menyertakan nilai 199 .

Sesuaikan output lebih banyak lagi dengan menggabungkan opsi yang disebutkan sebelumnya. Misalnya, hanya cetak nama depan dan belakang orang yang lahir di 1995 atau 2003 dengan:

gawk '/1995|2003/ {print $2, $3}' people

Perintah mencetak kolom dua dan tiga seperti yang dinyatakan dalam {print $2, $3} bagian. Keluaran hanya menampilkan baris yang berisi angka 1995 dan 2003 , meskipun kolom yang berisi angka-angka tersebut disembunyikan.

gawk perintah juga memungkinkan pengguna mencetak semuanya kecuali untuk baris yang berisi string tertentu dengan logika TIDAK (! ). Misalnya, hilangkan baris yang berisi string 19 pada keluaran:

gawk '!/19/' people

Tambahkan Nomor Baris

orang file menyertakan nomor baris di kolom pertama. Jika pengguna mengerjakan file tanpa nomor baris, gawk menyajikan opsi untuk menambahkannya.

Misalnya, manusia file tidak menyertakan nomor urut apa pun:

Untuk menambahkan nomor baris, jalankan gawk dengan FNR dan next :

gawk '{ print FNR, $0; next}' humans

Perintah menambahkan nomor baris sebelum setiap baris. Hasil yang sama dicapai dengan NR variabel:

gawk '{print NR, $0}' mobile.txt

Temukan Hitungan Baris

Untuk menghitung jumlah baris dalam file, gunakan END pernyataan dan NR variabel dengan gawk :

gawk 'END { print NR }' people

Perintah membaca setiap baris. Sekali gawk mencapai END , ia mencetak nilai NR - yang berisi jumlah total baris. Menjalankan perintah yang sama tanpa END pernyataan hanya mencetak nilai NR - jumlah baris:

Filter Garis Berdasarkan Panjangnya

Gunakan opsi perintah berikut untuk mencetak hanya baris yang lebih panjang dari 20 karakter:

gawk 'length>20' people

Ini juga berfungsi dengan banyak argumen. Misalnya, tampilkan garis yang lebih panjang dari 17 tapi lebih pendek dari 20 karakter:

gawk 'length<20 && length>17' people

Untuk menampilkan garis yang panjangnya tepat 20 karakter, jalankan:

gawk 'length==20' people

Info Cetak Berdasarkan Ketentuan

gawk perintah memungkinkan untuk penggunaan pernyataan if-else. Misalnya, cara lain untuk memfilter hanya orang yang lahir setelah 1999 adalah dengan pernyataan if sederhana:

gawk '{ if ($4>1999) print }' people

Pernyataan if menetapkan kondisi bahwa entri di kolom empat harus lebih besar dari 1999 . Output hanya menampilkan entri yang memenuhi kondisi. Perluas perintah menjadi pernyataan if-else untuk mencetak baris yang tidak memenuhi kondisi aslinya.

gawk '{if ($4>1999) print $0," ==>00s"; else print $0, "==>90s"}' people

Perintah tersebut meliputi:

  • Pernyataan if. Jika kondisi terpenuhi, gawk menambahkan string "==>90s " ke jalur keluaran.
  • Pernyataan lain. Jika baris tidak memenuhi ketentuan, gawk masih mencetak baris itu di output, menambahkan "==>00s " string ke output.

Tambahkan Tajuk

Dengan cara yang sama di mana END pernyataan memungkinkan pengguna untuk memodifikasi output di akhir file, BEGIN pernyataan memformat data di awal.

Saat digunakan dengan awk , BEGIN bagian selalu dieksekusi terlebih dahulu. Setelah itu, awk mengeksekusi baris yang tersisa. Salah satu cara untuk menggunakan BEGIN pernyataan adalah menambahkan header ke output.

Jalankan perintah berikut untuk menambahkan bagian di atas awk keluaran:

gawk 'BEGIN {print "No/First&Last Name/Year of Birth"} {print $0}' people

Temukan Panjang Garis Terpanjang

Gabungkan argumen sebelumnya dengan jika dan END pernyataan untuk menemukan garis terpanjang di orang berkas:

gawk '{ if (length($0) > max) max = length($0) } END { print max }' people

Menemukan Jumlah Kolom

gawk perintah juga memungkinkan pengguna untuk menampilkan jumlah bidang dengan NF variabel. Cara paling sederhana untuk menampilkan jumlah bidang mencetak keluaran yang sulit dibaca:

gawk '{print NF}' people

Perintah menampilkan jumlah bidang per baris tanpa info tambahan. Untuk menyesuaikan output dan membuatnya lebih mudah dibaca manusia, sesuaikan perintah awal:

gawk '{print NR, "-->", NF}' people

Perintah sekarang termasuk:

  • NR variabel yang menambahkan nomor baris ke setiap baris keluaran.
  • --> string yang memisahkan nomor baris dari nomor bidang.

Cara lain untuk menampilkan nomor baris dan bidang di orang file untuk mencetak kolom dengan NF . Perhatikan bahwa orang file termasuk nomor urut di kolom satu. Oleh karena itu NR variabel dihilangkan:

gawk '{print $0, "-->", NF}' people

Terakhir, untuk mencetak jumlah total bidang, jalankan:

gawk '{num_fields = num_fields + NF} END {print num_fields}' people

File tersebut memang memiliki sepuluh baris dan empat kolom. Oleh karena itu, outputnya benar.

Kesimpulan

Setelah melalui tutorial ini, Anda tahu cara menggunakan gawk untuk pemrosesan teks dan manipulasi data tingkat lanjut.

Pertimbangkan juga untuk menggunakan grep, alat Linux yang kuat untuk mencari string, kata, dan pola.


Linux
  1. perintah chattr di Linux dengan contoh

  2. Perintah JQ di Linux dengan Contoh

  3. ln Contoh Perintah di Linux

  1. Perintah wc Linux dengan Contoh

  2. Urutkan Perintah di Linux dengan Contoh

  3. File Contoh Perintah di Linux

  1. Perintah sortir Linux dengan Contoh

  2. 10 Perintah Cepat Linux Tail dengan Contoh

  3. Perintah ip Linux dengan Contoh