Cara menggunakan AWK untuk mencetak medan dan lajur dalam fail
- 3236
- 111
- Noah Torp
Di bahagian siri perintah Linux Awk ini, kita akan melihat salah satu ciri yang paling penting Awk, yang mengedit medan.
Adalah baik untuk mengetahui perkara itu Awk secara automatik membahagikan garisan input yang diberikan kepadanya ke dalam medan, dan medan boleh ditakrifkan sebagai satu set aksara yang dipisahkan dari medan lain oleh pemisah medan dalaman.
Medan cetak dan lajurSekiranya anda sudah biasa dengan pengaturcaraan shell UNIX/LINUX atau melakukan bash shell, maka anda harus tahu apa pemisah bidang dalaman (Ifs) pembolehubah adalah. IF lalai dalam AWK adalah tab dan ruang.
Ini adalah bagaimana idea pemisahan medan berfungsi Awk: Apabila ia menemui garis input, mengikut IFS yang ditakrifkan, set pertama aksara adalah medan satu, yang diakses menggunakan $ 1, Set watak kedua ialah Field Two, yang diakses menggunakan $ 2, Set aksara ketiga adalah Field Three, yang diakses menggunakan $ 3 dan sebagainya sehingga set terakhir watak.
Untuk memahami pengeditan medan AWK ini dengan lebih baik, mari kita lihat contoh di bawah:
Contoh 1: Saya telah membuat fail teks yang dipanggil Tecmintinfo.txt.
# vi tecmintinfo.TXT # CAT TECMINTINFO.txtBuat Fail di Linux
Kemudian dari baris arahan, saya cuba mencetak Pertama, kedua dan Ketiga medan dari fail Tecmintinfo.txt Menggunakan arahan di bawah:
$ awk '// cetak $ 1 $ 2 $ 3' tecmintinfo.txt Tecmint.comisthe
Dari output di atas, anda dapat melihat bahawa watak -watak dari tiga bidang pertama dicetak berdasarkan Ifs ditakrifkan yang mana ruang:
- Medan satu yang mana "Tecmint.com "" diakses menggunakan
$ 1
. - Medan dua yang mana "Adakah" diakses menggunakan
$ 2
. - Bidang tiga yang mana "The" diakses menggunakan
$ 3
.
Sekiranya anda perasan dalam output bercetak, nilai medan tidak dipisahkan dan ini adalah bagaimana cetakan bertindak secara lalai.
Untuk melihat output dengan jelas dengan ruang antara nilai medan, anda perlu menambah (,)
pengendali seperti berikut:
$ awk '// cetak $ 1, $ 2, $ 3; 'tecmintinfo.txt Tecmint.com adalah
Satu perkara penting untuk diperhatikan dan selalu ingat ialah penggunaan ($)
dalam Awk berbeza dengan penggunaannya dalam skrip shell.
Di bawah skrip shell ($)
digunakan untuk mengakses nilai pembolehubah semasa masuk Awk ($)
ia hanya digunakan semasa mengakses kandungan medan tetapi bukan untuk mengakses nilai pembolehubah.
Contoh 2: Mari kita lihat satu contoh lain menggunakan fail yang mengandungi pelbagai baris yang dipanggil my_shoping.senarai.
Tiada item_name Unit_price Harga kuantiti 1 tetikus #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
Katakan anda hanya mahu mencetak Harga seunit
Dari setiap item di senarai membeli -belah, anda perlu menjalankan arahan di bawah:
$ awk '// cetak $ 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 mempunyai printf
Perintah yang membantu anda memformat output anda adalah cara yang baik kerana anda dapat melihat output di atas tidak cukup jelas.
Menggunakan printf
Untuk memformat output dari Nama barang dan Harga seunit:
$ 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
Penyuntingan medan sangat penting semasa menggunakan Awk Untuk menapis teks atau rentetan, ia membantu anda mendapatkan data tertentu dalam lajur dalam senarai. Dan selalu ingat bahawa penggunaan ($)
pengendali dalam Awk berbeza dengan skrip shell itu.
Saya harap artikel ini membantu anda dan untuk sebarang maklumat tambahan yang diperlukan atau soalan, anda boleh menyiarkan komen di bahagian komen.
- « Cara Menggunakan Awk dan Ekspresi Biasa Untuk Menapis Teks atau Rentetan Dalam Fail
- Ebook Memperkenalkan Django Bermula Dengan Asas Python »