Cara menggunakan awk untuk mencetak bidang dan kolom dalam file

Cara menggunakan awk untuk mencetak bidang dan kolom dalam file

Di bagian seri perintah AWK Linux kami ini, kami akan melihat salah satu fitur terpenting dari AWK, yang merupakan pengeditan lapangan.

Senang mengetahui hal itu AWK Secara otomatis membagi garis input yang disediakan untuk itu menjadi bidang, dan bidang dapat didefinisikan sebagai satu set karakter yang dipisahkan dari bidang lain oleh pemisah bidang internal.

Bidang dan kolom cetak awk

Jika Anda terbiasa dengan pemrograman UNIX/Linux atau Do Bash Shell, maka Anda harus tahu pemisah bidang internal apa (Ifs) Variabel adalah. IFS default di AWK adalah tab dan ruang.

Beginilah ide pemisahan lapangan bekerja AWK: Saat menemukan garis input, sesuai dengan IFS yang ditentukan, set karakter pertama adalah bidang satu, yang diakses menggunakan $ 1, set karakter kedua adalah bidang dua, yang diakses menggunakan $ 2, Kumpulan karakter ketiga adalah bidang tiga, yang diakses menggunakan $ 3 dan sebagainya sampai set karakter terakhir.

Untuk memahami pengeditan bidang AWK ini dengan lebih baik, mari kita lihat contoh di bawah ini:

Contoh 1: Saya telah membuat file teks yang dipanggil Tecmintinfo.txt.

# vi tecmintinfo.txt # kucing tecmintinfo.txt 
Buat File di Linux

Kemudian dari baris perintah, saya mencoba mencetak Pertama, Kedua Dan ketiga bidang dari file Tecmintinfo.txt Menggunakan perintah di bawah ini:

$ awk '// print $ 1 $ 2 $ 3' Tecmintinfo.txt Tecmint.Comisthe 

Dari output di atas, Anda dapat melihat bahwa karakter dari tiga bidang pertama dicetak berdasarkan pada Ifs didefinisikan yang merupakan ruang:

  1. Bidang satu yaitu “Tecmint.com " diakses menggunakan $ 1.
  2. Bidang dua yang "adalah" diakses menggunakan $ 2.
  3. Bidang tiga yang "itu" diakses menggunakan $ 3.

Jika Anda telah memperhatikan dalam output yang dicetak, nilai bidang tidak dipisahkan dan beginilah cetak berperilaku secara default.

Untuk melihat output dengan jelas dengan ruang di antara nilai -nilai bidang, Anda perlu menambahkan (,) Operator sebagai berikut:

$ awk '// cetak $ 1, $ 2, $ 3;  'Tecmintinfo.txt Tecmint.com adalah 

Satu hal penting yang perlu diperhatikan dan selalu diingat adalah bahwa penggunaannya ($) di dalam AWK berbeda dari penggunaannya dalam skrip shell.

Di bawah skrip shell ($) digunakan untuk mengakses nilai variabel saat berada di AWK ($) itu hanya digunakan saat mengakses isi bidang tetapi tidak untuk mengakses nilai variabel.

Contoh 2: Mari kita lihat satu contoh lain menggunakan file yang berisi beberapa baris yang disebut my_shoping.daftar.

No item_name unit_price Harga kuantitas 1 mouse #20.000 1 #20.000 2 monitor #500.000 1 #500.000 3 ram_chips #150.000 2 #300.000 4 Ethernet_cables #30.000 4 #120.000 

Katakanlah Anda hanya ingin mencetak Harga satuan Dari setiap item di daftar belanja, Anda harus menjalankan perintah di bawah ini:

$ awk '// print $ 2, $ 3' my_shopping.txt  Item_name unit_price mouse #20.000 monitor #500.000 ram_chips #150.000 ethernet_cables #30.000 

AWK juga memiliki a printf Perintah yang membantu Anda memformat output Anda adalah cara yang bagus karena Anda dapat melihat output di atas tidak cukup jelas.

Menggunakan printf untuk memformat output dari Nama barang Dan Harga satuan:

$ awk '// printf " %-10s %s \ n", $ 2, $ 3' my_shopping.txt Item_name unit_price mouse #20.000 monitor #500.000 ram_chips #150.000 ethernet_cables #30.000 

Ringkasan

Pengeditan lapangan sangat penting saat menggunakan AWK Untuk memfilter teks atau string, ini membantu Anda mendapatkan data tertentu dalam kolom dalam daftar. Dan selalu ingat bahwa penggunaannya ($) operator di AWK berbeda dari itu di scripting shell.

Saya harap artikel ini bermanfaat bagi Anda dan untuk informasi tambahan yang diperlukan atau pertanyaan, Anda dapat memposting komentar di bagian komentar.