Cara Menggunakan Pengendali Perbandingan dengan Awk di Linux - Bahagian 4

Cara Menggunakan Pengendali Perbandingan dengan Awk di Linux - Bahagian 4

Apabila berurusan dengan nilai berangka atau rentetan dalam baris teks, penapisan teks atau rentetan menggunakan pengendali perbandingan berguna untuk Awk Pengguna Perintah.

Di bahagian siri AWK ini, kami akan melihat bagaimana anda boleh menapis teks atau rentetan menggunakan pengendali perbandingan. Sekiranya anda seorang pengaturcara maka anda mesti sudah biasa dengan pengendali perbandingan tetapi mereka yang tidak, izinkan saya menerangkan di bahagian di bawah.

Apakah pengendali perbandingan di Awk?

Pengendali perbandingan di AWK digunakan untuk membandingkan nilai nombor atau rentetan dan mereka termasuk yang berikut:

  1. > - lebih besar daripada
  2. < - kurang daripada
  3. > = - lebih besar daripada atau sama dengan
  4. <= - kurang daripada atau sama dengan
  5. == - sama dengan
  6. != - tidak sama dengan
  7. some_value ~ / corak / - benar jika corak sepadan dengan some_value
  8. Some_value !~ / corak / - benar jika some_value tidak sepadan dengan corak

Sekarang kita telah melihat pelbagai pengendali perbandingan di Awk, marilah kita memahami mereka dengan lebih baik menggunakan contoh.

Dalam contoh ini, kami mempunyai fail yang dinamakan Makanan_list.txt yang merupakan senarai membeli -belah untuk barangan makanan yang berbeza dan saya ingin menandakan barang makanan yang kuantiti kurang dari atau sama dengan 20 dengan menambah (**) Pada akhir setiap baris.

Fail - food_list.txt
Tiada Harga Kuantiti Item_NAME 1 mangga 45 $ 3.45 2 epal 25 $ 2.45 3 nanas 5 $ 4.45 4 Tomato 25 $ 3.45 5 Bawang 15 $ 1.45 6 pisang 30 $ 3.45 

Sintaks umum untuk menggunakan pengendali perbandingan di AWK ialah:

# ekspresi Actions;  

Untuk mencapai matlamat di atas, saya perlu menjalankan arahan di bawah:

# awk '$ 3 30 cetak $ 0;' food_list.txt Tidak ada harga item_name 'Harga kuantiti 1 mangga 45 $ 3.45 2 epal 25 $ 2.45 ** 3 nanas 5 $ 4.45 ** 4 tomato 25 $ 3.45 ** 5 Bawang 15 $ 1.45 ** 6 pisang 30 $ 3.45 ** 

Dalam contoh di atas, terdapat dua perkara penting yang berlaku:

  1. Ungkapan pertama tindakan ; gabungan, $ 3 <= 30 printf "%s \ t%s \ n", $ 0, "**"; mencetak garis dengan kuantiti kurang daripada atau sama dengan 30 dan menambah a (**) Pada akhir setiap baris. Nilai kuantiti diakses menggunakan $ 3 pembolehubah medan.
  2. Ungkapan kedua tindakan ; gabungan, $ 3> 30 cetak $ 0; mencetak garis tidak berubah kerana kuantiti mereka lebih besar ketika itu 30.

Satu lagi contoh:

# awk '$ 3 20 cetak $ 0;' food_list.txt  Tiada Harga Kuantiti Item_NAME 1 mangga 45 $ 3.45 2 epal 25 $ 2.45 3 nanas 5 $ 4.45 benar 4 tomato 25 $ 3.45 5 Bawang 15 $ 1.45 True 6 Pisang 30 $ 3.45 

Dalam contoh ini, kami ingin menunjukkan garis dengan kuantiti kurang atau sama dengan 20 dengan perkataan (Benar) pada akhir.

Ringkasan

Ini adalah tutorial pengenalan kepada pengendali perbandingan di Awk, oleh itu anda perlu mencuba banyak pilihan lain dan menemui lebih lanjut.

Sekiranya terdapat masalah yang anda hadapi atau apa -apa penambahan yang anda fikirkan, kemudian jatuhkan komen di bahagian komen di bawah. Ingatlah untuk membaca bahagian seterusnya siri Awk di mana saya akan membawa anda melalui Ekspresi Kompaun.