20 contoh awk

20 Awk Examples



Banyak alat utiliti ada dalam sistem operasi Linux untuk mencari dan menghasilkan laporan dari data teks atau fail. Pengguna dapat dengan mudah melakukan banyak jenis pencarian, penggantian dan laporan menghasilkan tugas dengan menggunakan perintah awk, grep dan sed. awk bukan sekadar perintah. Ini adalah bahasa skrip yang dapat digunakan dari kedua-dua terminal dan fail awk. Ia menyokong pemboleh ubah, pernyataan bersyarat, susunan, gelung dan lain-lain seperti bahasa skrip lain. Ia dapat membaca setiap kandungan kandungan baris demi baris dan memisahkan bidang atau lajur berdasarkan pembatas tertentu. Ini juga mendukung ekspresi biasa untuk mencari rentetan tertentu dalam kandungan teks atau file dan mengambil tindakan jika ada kecocokan. Cara anda menggunakan perintah awk dan skrip ditunjukkan dalam tutorial ini dengan menggunakan 20 contoh berguna.

Kandungan:

  1. awk dengan printf
  2. awk berpecah di ruang putih
  3. awk untuk menukar pembatas
  4. awk dengan data yang dibatasi tab
  5. awk dengan data csv
  6. awk regex
  7. awk case tidak sensitif regex
  8. awk dengan pemboleh ubah nf (bilangan medan)
  9. fungsi awk gensub ()
  10. awk dengan fungsi rand ()
  11. fungsi yang ditentukan pengguna awk
  12. awk jika
  13. pemboleh ubah awk
  14. susunan awk
  15. gelung awk
  16. awk untuk mencetak lajur pertama
  17. awk untuk mencetak ruangan terakhir
  18. awk dengan grep
  19. awk dengan fail skrip bash
  20. awk dengan sed

Menggunakan awk dengan printf

printf () fungsi digunakan untuk memformat sebarang output dalam kebanyakan bahasa pengaturcaraan. Fungsi ini boleh digunakan dengan awk arahan untuk menghasilkan pelbagai jenis output berformat. arahan awk terutama digunakan untuk sebarang fail teks. Buat fail teks bernama pekerja.txt dengan kandungan yang diberikan di bawah di mana bidang dipisahkan oleh tab (‘ t’).







pekerja.txt



1001 John sena 40000
1002 Jafar Iqbal 60000
1003 Meher Nigar 30000
1004 Jonny Liver 70000

Perintah awk berikut akan membaca data dari pekerja.txt failkan baris demi baris dan cetak yang pertama difailkan selepas pemformatan. Di sini, % 10s n bermaksud bahawa output akan panjang 10 aksara. Sekiranya nilai output kurang dari 10 aksara maka spasi akan ditambahkan di bahagian depan nilai.



$ awk'{printf'% 10s n', $ 1}'pekerja.txt

Pengeluaran:





Pergi ke Kandungan



awk berpecah di ruang putih

Pemisah kata atau medan lalai untuk membelah sebarang teks adalah ruang kosong. perintah awk dapat mengambil nilai teks sebagai input dalam pelbagai cara. Teks input dihantar dari membuang arahan dalam contoh berikut. Teks, ' Saya suka pengaturcaraan Akan dibahagi secara pemisah lalai, ruang , dan perkataan ketiga akan dicetak sebagai output.

$membuang 'Saya suka pengaturcaraan' | awk '{cetak $ 3}'

Pengeluaran:

Pergi ke Kandungan

awk untuk menukar pembatas

perintah awk boleh digunakan untuk mengubah pembatas bagi sebarang kandungan fail. Katakan, anda mempunyai fail teks bernama telefon.txt dengan kandungan berikut di mana ':' digunakan sebagai pemisah bidang kandungan fail.

telefon.txt

+123: 334: 889: 778
+880: 1855: 456: 907
+9: 7777: 38644: 808

Jalankan arahan awk berikut untuk menukar pembatas, ':' oleh ‘-’ ke kandungan fail, telefon.txt .

$ cat phone.txt
$ awk '$ 1 = $ 1' FS = ':' OFS = '-' phone.txt

Pengeluaran:

Pergi ke Kandungan

awk dengan data yang dibatasi tab

perintah awk mempunyai banyak pemboleh ubah terbina dalam yang digunakan untuk membaca teks dengan cara yang berbeza. Dua daripadanya adalah FS dan OFS . FS adalah pemisah medan input dan OFS adalah pemboleh ubah pemisah medan output. Penggunaan pemboleh ubah ini ditunjukkan dalam bahagian ini. Buat a tab fail yang dipisahkan bernama input.txt dengan kandungan berikut untuk menguji kegunaan FS dan OFS pemboleh ubah.

Input.txt

Bahasa skrip sisi pelanggan
Bahasa skrip sisi pelayan
Pelayan Pangkalan Data
Pelayan Web

Menggunakan pemboleh ubah FS dengan tab

Perintah berikut akan membahagi setiap baris input.txt fail berdasarkan tab (‘ t’) dan cetak bidang pertama setiap baris.

$awk '{cetak $ 1}' FS=' t'input.txt

Pengeluaran:

Menggunakan pemboleh ubah OFS dengan tab

Perintah awk berikut akan mencetak 9ika dan 5ika bidang dari 'Ls -l' output perintah dengan pemisah tab setelah mencetak tajuk lajur Nama dan Saiz . Di sini, OFS pemboleh ubah digunakan untuk memformat output dengan tab.

$ls -tempat
$ls -tempat | awk -v OFS=' t' 'BEGIN {printf'% s t% s n ',' Nama ',' Saiz '} {cetak $ 9, $ 5}'

Pengeluaran:

Pergi ke Kandungan

awk dengan data CSV

Kandungan fail CSV apa pun dapat diuraikan dengan pelbagai cara dengan menggunakan perintah awk. Buat fail CSV yang diberi nama ‘ pelanggan.csv 'Dengan kandungan berikut untuk menerapkan perintah awk.

pelanggan.txt

Id, Nama, e-mel, telefon
1, Sophia, [dilindungi e-mel], (862) 478-7263
2, Amelia, [dilindungi e-mel], (530) 764-8000
3, Emma, ​​[dilindungi e-mel], (542) 986-2390

Membaca satu bidang fail CSV

‘-F’ pilihan digunakan dengan perintah awk untuk menetapkan pembatas untuk membelah setiap baris fail. Perintah awk berikut akan mencetak nama bidang pelanggan.csv fail.

$kucingpelanggan.csv
$awk -F ',' '{cetak $ 2}'pelanggan.csv

Pengeluaran:

Membaca pelbagai bidang dengan menggabungkan dengan teks lain

Perintah berikut akan mencetak tiga bidang pelanggan.csv dengan menggabungkan teks tajuk, Nama, E-mel dan Telefon . Baris pertama dari pelanggan.csv fail mengandungi tajuk setiap bidang. TIADA pemboleh ubah mengandungi nombor baris fail ketika perintah awk menguraikan fail. Dalam contoh ini, NR pemboleh ubah digunakan untuk menghilangkan baris pertama fail. Keluaran akan menunjukkan 2nd, 3rddan 4ikabidang semua baris kecuali baris pertama.

$awk -F ',' 'NR> 1 {print' Nama: '$ 2', E-mel: '$ 3', Telefon: '$ 4}'pelanggan.csv

Pengeluaran:

Membaca fail CSV menggunakan skrip awk

skrip awk dapat dijalankan dengan menjalankan fail awk. Cara anda membuat fail awk dan menjalankan fail ditunjukkan dalam contoh ini. Buat fail bernama awkcsv.awk dengan kod berikut. BERMULA kata kunci digunakan dalam skrip untuk memberitahu perintah awk untuk melaksanakan skrip BERMULA berpisah terlebih dahulu sebelum melaksanakan tugas lain. Di sini, pemisah medan ( FS ) digunakan untuk menentukan pembatas pemisah dan 2nddan 1stbidang akan dicetak mengikut format yang digunakan dalam fungsi printf ().

awkcsv.awk
BERMULA{FS= ','} { printf '% 5s (% s) n',$2,$1}

Lari awkcsv.awk fail dengan kandungan pelanggan.csv fail dengan arahan berikut.

$awk -fawkcsv.awk pelanggan.csv

Pengeluaran:

Pergi ke Kandungan

awk regex

Ungkapan biasa adalah corak yang digunakan untuk mencari rentetan dalam teks. Pelbagai jenis tugas pencarian dan penggantian yang rumit dapat dilakukan dengan mudah dengan menggunakan ungkapan biasa. Beberapa penggunaan sederhana ungkapan biasa dengan perintah awk ditunjukkan dalam bahagian ini.

Perwatakan yang sepadanset

Perintah berikut akan sesuai dengan perkataan Bodoh atau bool atau Sejuk dengan rentetan input dan cetak sekiranya perkataan itu dijumpai. Di sini, Anak patung tidak akan sesuai dan tidak dicetak.

$printf 'Bodoh nSejuk nAnak patung nbool ' | awk '/ [FbC] ool /'

Pengeluaran:

Mencari rentetan pada permulaan baris

‘^’ simbol digunakan dalam ungkapan biasa untuk mencari corak apa pun pada permulaan garis. ' Linux ’ perkataan akan dicari pada permulaan setiap baris teks dalam contoh berikut. Di sini, dua baris bermula dengan teks, ‘Linux 'Dan kedua-dua baris akan ditunjukkan dalam output.

$membuang -Dan Linux bebas digunakan nIa adalah perisian sumber terbuka nLinuxHint adalah
laman blog yang popular '
| awk '/ ^ Linux /'

Pengeluaran:

Mencari rentetan di hujung baris

'$' simbol digunakan dalam ungkapan biasa untuk mencari corak apa pun di akhir setiap baris teks. ' Skrip Perkataan dicari dalam contoh berikut. Di sini, dua baris mengandungi perkataan, Skrip di hujung talian.

$membuang -Dan Skrip PHP nJavaScript nPengaturcaraan Visual ' | awk '/ Skrip $ /'

Pengeluaran:

Mencari dengan menghilangkan set watak tertentu

‘^’ simbol menunjukkan permulaan teks apabila digunakan di hadapan corak rentetan (‘/ ^… /’) atau sebelum set watak yang diisytiharkan oleh ^ […] . Sekiranya ‘^’ simbol digunakan di dalam kurungan ketiga, [^…] maka set watak yang ditentukan di dalam kurungan akan dihilangkan pada waktu pencarian. Perintah berikut akan mencari mana-mana perkataan yang tidak bermula ‘F’ tetapi berakhir dengan ‘ ool '. Sejuk dan bool akan dicetak mengikut corak dan data teks.

$ printf 'Bodoh nSejuk nAnak patung nbool ' |awk'/ [^ F] ool /'

Pengeluaran:

Pergi ke Kandungan

awk case tidak sensitif regex

Secara lalai, ungkapan biasa melakukan carian sensitif huruf ketika mencari corak dalam rentetan. Pencarian peka huruf besar boleh dilakukan dengan perintah awk dengan ungkapan biasa. Dalam contoh berikut, untuk rendahkan() fungsi digunakan untuk melakukan carian tidak sensitif kes. Di sini, kata pertama setiap baris teks input akan ditukar menjadi huruf kecil dengan menggunakan untuk rendahkan() berfungsi dan sesuai dengan corak ungkapan biasa. penyepit () fungsi juga dapat digunakan untuk tujuan ini, dalam hal ini, pola harus ditentukan oleh semua huruf besar. Teks yang ditentukan dalam contoh berikut mengandungi kata pencarian, 'Web Dalam dua baris yang akan dicetak sebagai output.

$membuang -Dan Reka Bentuk Web npembangunan web nRangka Kerja ' | awk 'tolower ($ 0) ~ / ^ web /;'

Pengeluaran:

Pergi ke Kandungan

awk dengan pemboleh ubah NF (bilangan medan)

NF adalah pemboleh ubah built-in perintah awk yang digunakan untuk mengira jumlah medan di setiap baris teks input. Buat mana-mana fail teks dengan pelbagai baris dan pelbagai perkataan. input.txt fail digunakan di sini yang dibuat dalam contoh sebelumnya.

Menggunakan NF dari baris arahan

Di sini, arahan pertama digunakan untuk memaparkan kandungan input.txt fail dan arahan kedua digunakan untuk menunjukkan jumlah medan di setiap baris fail menggunakan NF pemboleh ubah.

$ cat input.txt
$ awk '{print NF}' input.txt

Pengeluaran:

Menggunakan NF dalam fail awk

Buat fail awk bernama mengira.awk dengan skrip yang diberikan di bawah. Apabila skrip ini akan dilaksanakan dengan data teks apa pun maka setiap kandungan baris dengan jumlah bidang akan dicetak sebagai output.

mengira.awk

{mencetak $0}
{mencetak'[Jumlah medan:'NF']'}

Jalankan skrip dengan arahan berikut.

$awk -fhitung.awk input.txt

Pengeluaran:

Pergi ke Kandungan

fungsi awk gensub ()

getub () adalah fungsi penggantian yang digunakan untuk mencari rentetan berdasarkan pembatas tertentu atau corak ekspresi biasa. Fungsi ini ditakrifkan dalam ‘Gawk’ pakej yang tidak dipasang secara lalai. Sintaks untuk fungsi ini diberikan di bawah. Parameter pertama mengandungi corak ekspresi biasa atau pembatas pencarian, parameter Kedua berisi teks pengganti, parameter ketiga menunjukkan bagaimana pencarian akan dilakukan dan parameter terakhir berisi teks di mana fungsi ini akan diterapkan.

Sintaks:

gensub(regexp, penggantian, bagaimana[, sasaran])

Jalankan arahan berikut untuk memasang gawk pakej untuk digunakan getub () berfungsi dengan arahan awk.

$ sudo apt-get install gawk

Buat fail teks bernama ' salesinfo.txt 'Dengan kandungan berikut untuk mempraktikkan contoh ini. Di sini, medan dipisahkan oleh tab.

salesinfo.txt

700000 saya
800000 anda
Rabu 750000
Kumpulkan 200000
Jumaat 430000
Sabtu 820000

Jalankan arahan berikut untuk membaca medan angka dari salesinfo.txt fail dan cetak jumlah keseluruhan jumlah penjualan. Di sini, parameter ketiga, ‘G’ menunjukkan carian global. Ini bermaksud corak akan dicari dalam kandungan penuh fail.

$awk '{x = gensub (' t ',' ',' G ', $ 2); printf x '+'} TAMAT {cetak 0} 'salesinfo.txt| bc -tempat

Pengeluaran:

Pergi ke Kandungan

awk dengan fungsi rand ()

baris () fungsi digunakan untuk menghasilkan nombor rawak yang lebih besar daripada 0 dan kurang daripada 1. Jadi, ia akan selalu menghasilkan nombor pecahan kurang dari 1. Perintah berikut akan menghasilkan nombor rawak pecahan dan mengalikan nilai dengan 10 untuk mendapatkan nombor lebih daripada 1. Nombor pecahan dengan dua digit selepas titik perpuluhan akan dicetak untuk menerapkan fungsi printf (). Sekiranya anda menjalankan perintah berikut berkali-kali maka anda akan mendapat output yang berbeza setiap masa.

$awk 'BEGIN {printf' Number is =%. 2f n ', rand () * 10}'

Pengeluaran:

Pergi ke Kandungan

fungsi yang ditentukan pengguna awk

Semua fungsi yang digunakan dalam contoh sebelumnya adalah fungsi terbina dalam. Tetapi anda boleh menyatakan fungsi yang ditentukan pengguna dalam skrip awk anda untuk melakukan tugas tertentu. Katakan, anda ingin membuat fungsi khusus untuk mengira luas sebuah segi empat tepat. Untuk melakukan tugas ini, buat fail bernama ' kawasan.awk 'Dengan skrip berikut. Dalam contoh ini, fungsi yang ditentukan pengguna dinamakan kawasan () dinyatakan dalam skrip yang mengira kawasan berdasarkan parameter input dan mengembalikan nilai kawasan. garis panduan arahan digunakan di sini untuk mengambil input dari pengguna.

kawasan.awk

# Kira luas
fungsikawasan(ketinggian,lebar){
kembaliketinggian*lebar
}

# Memulakan pelaksanaan
BERMULA{
mencetak'Masukkan nilai ketinggian:'
garis panduan h< '-'
mencetak'Masukkan nilai lebar:'
garis panduan w< '-'
mencetak'Kawasan ='kawasan(h,dalam)
}

Jalankan skrip.

$awk -fkawasan.awk

Pengeluaran:

Pergi ke Kandungan

awk jika contoh

awk menyokong pernyataan bersyarat seperti bahasa pengaturcaraan standard lain. Tiga jenis pernyataan jika ditunjukkan dalam bahagian ini dengan menggunakan tiga contoh. Buat fail teks bernama item.txt dengan kandungan berikut.

item.txt

HDD Samsung $ 100
Tetikus A4Tech
Pencetak HP $ 200

Ringkas jika contoh :

dia mengikuti arahan akan membaca kandungan item.txt fail dan periksa 3rd nilai medan di setiap baris. Sekiranya nilainya kosong maka ia akan mencetak mesej ralat dengan nombor baris.

$awk '{if ($ 3 ==' ') cetak' Medan harga tidak ada di baris 'NR}'item.txt

Pengeluaran:

jika-contoh lain:

Perintah berikut akan mencetak harga barang jika 3rdbidang ada dalam baris, jika tidak, ia akan mencetak mesej ralat.

$ awk'{if ($ 3 ==' ') cetak' Medan harga tiada '
yang lain cetak 'harga barang adalah' $ 3} '
barang.txt

Pengeluaran:

if-else-if contoh:

Apabila arahan berikut akan dilaksanakan dari terminal maka ia akan mengambil input dari pengguna. Nilai input akan dibandingkan dengan masing-masing jika keadaan sehingga keadaan benar. Sekiranya ada syarat yang berlaku maka ia akan mencetak gred yang sesuai. Sekiranya nilai input tidak sesuai dengan keadaan apa pun maka ia akan gagal dicetak.

$awk 'BEGIN {print' Masukkan tanda: '
tanda getline<'-'
jika (mark> = 90) cetak 'A +'
lain jika (mark> = 80) cetak 'A'
lain jika (mark> = 70) cetak 'B +'
lain cetak 'Fail'} '

Pengeluaran:

Pergi ke Kandungan

pemboleh ubah awk

Pengisytiharan pemboleh ubah awk serupa dengan pengisytiharan pemboleh ubah shell. Terdapat perbezaan dalam membaca nilai pemboleh ubah. Simbol ‘$’ digunakan dengan nama pemboleh ubah untuk pemboleh ubah shell untuk membaca nilainya. Tetapi tidak perlu menggunakan ‘$’ dengan pemboleh ubah awk untuk membaca nilainya.

Menggunakan pemboleh ubah mudah:

Perintah berikut akan menyatakan pemboleh ubah bernama 'tapak' dan nilai rentetan diberikan kepada pemboleh ubah tersebut. Nilai pemboleh ubah dicetak dalam pernyataan seterusnya.

$awk 'BEGIN {site =' LinuxHint.com '; laman cetak} '

Pengeluaran:

Menggunakan pemboleh ubah untuk mengambil data dari fail

Perintah berikut akan mencari perkataan 'Mesin pencetak' dalam fail item.txt . Sekiranya ada baris fail bermula dengan 'Mesin pencetak Maka ia akan menyimpan nilai 1st , 2nd dan 3rd bidang menjadi tiga pemboleh ubah. nama dan harga pemboleh ubah akan dicetak.

$ awk'/ Pencetak / {name = $ 1; jenama = $ 2; harga = $ 3; cetak' nama item = 'nama;
cetak 'harga barang =' harga} '
barang.txt

Pengeluaran:

Pergi ke Kandungan

susunan awk

Kedua-dua tatasusunan berangka dan berkaitan boleh digunakan dalam awk. Pengisytiharan pemboleh ubah array dalam awk sama dengan bahasa pengaturcaraan lain. Beberapa kegunaan susunan ditunjukkan dalam bahagian ini.

Array Bersekutu:

Indeks larik akan menjadi rentetan bagi susunan bersekutu. Dalam contoh ini, susunan tiga elemen dinyatakan dan dicetak.

$awk 'MULAKAN {
buku ['Web Design'] = 'Belajar HTML 5';
buku ['Pengaturcaraan Web'] = 'PHP dan MySQL'
buku ['PHP Framework'] = 'Belajar Laravel 5'
printf '% s n% s n% s n', buku ['Web Design'], buku ['Web Programming'],
buku ['PHP Framework']} '

Pengeluaran:

Array Numerik:

Susunan angka tiga elemen dinyatakan dan dicetak dengan memisahkan tab.

$ awk'MULAKAN {
nombor [0] = 80;
nombor [1] = 55;
nombor [2] = 76;

# elemen susunan cetak
printf 'Array nilai:% d t% d t% d n', nombor [0], nombor [1], nombor [2]; } '

Pengeluaran:

Pergi ke Kandungan

gelung awk

Tiga jenis gelung disokong oleh awk. Kegunaan gelung ini ditunjukkan di sini dengan menggunakan tiga contoh.

Semasa gelung:

sementara gelung yang digunakan dalam perintah berikut akan berulang selama 5 kali dan keluar dari gelung untuk pernyataan putus.

$ awk 'MULAKAN {n = 1; sementara (n 5) rehat; mencetak n; n ++}} '

Pengeluaran:

Untuk gelung:

Untuk gelung yang digunakan dalam perintah awk berikut akan mengira jumlahnya dari 1 hingga 10 dan mencetak nilainya.

$awk 'MULAKAN {jumlah = 0; untuk (n = 1; n<= 10; n++) sum=sum+n; print sum }'

Pengeluaran:

Gelung buat sementara waktu:

gelung do-while arahan berikut akan mencetak semua nombor genap dari 10 hingga 5.

$awk 'BEGIN {kaunter = 10; lakukan {if (kaunter% 2 == 0) kaunter cetak; kaunter--}
sementara (kaunter> 5)} '

Pengeluaran:

Pergi ke Kandungan

awk untuk mencetak lajur pertama

Lajur pertama mana-mana fail boleh dicetak dengan menggunakan pemboleh ubah $ 1 dalam awk. Tetapi jika nilai lajur pertama mengandungi banyak perkataan maka hanya cetakan pertama lajur pertama. Dengan menggunakan pembatas tertentu, lajur pertama dapat dicetak dengan betul. Buat fail teks bernama pelajar.txt dengan kandungan berikut. Di sini, lajur pertama mengandungi teks dua perkataan.

Pelajar.txt

Kaniz Fatema 30ikakumpulan
Abir Hossain 35ikakumpulan
John Abraham 40ikakumpulan

Jalankan arahan awk tanpa pembatas. Bahagian pertama lajur pertama akan dicetak.

$awk '{cetak $ 1}'pelajar.txt

Jalankan perintah awk dengan pembatas berikut. Bahagian penuh lajur pertama akan dicetak.

$awk -F '\ s \ s' '{cetak $ 1}'pelajar.txt

Pengeluaran:

Pergi ke Kandungan

awk untuk mencetak ruangan terakhir

$ (NF) pemboleh ubah boleh digunakan untuk mencetak lajur terakhir dari sebarang fail. Perintah awk berikut akan mencetak bahagian terakhir dan bahagian penuh pada lajur terakhir para pelajar.txt fail.

$awk '{cetak $ (NF)}'pelajar.txt
$awk -F '\ s \ s' '{cetak $ (NF)}'pelajar.txt

Pengeluaran:

Pergi ke Kandungan

awk dengan grep

grep adalah satu lagi perintah Linux yang berguna untuk mencari kandungan dalam fail berdasarkan ungkapan biasa. Cara kedua perintah awk dan grep dapat digunakan bersama ditunjukkan dalam contoh berikut. cengkaman arahan digunakan untuk mencari maklumat id pekerja, ‘ 1002 Dari pekerja.txt fail. Output perintah grep akan dihantar ke awk sebagai input data. Bonus 5% akan dikira dan dicetak berdasarkan gaji id pekerja, ' 1002 ' dengan arahan awk.

$kucingpekerja.txt
$cengkaman '1002'pekerja.txt| awk -F ' t' '{print $ 2' akan mendapat $ '($ 3 * 5) / 100' bonus '}'

Pengeluaran:

Pergi ke Kandungan

awk dengan fail BASH

Seperti arahan Linux yang lain, perintah awk juga dapat digunakan dalam skrip BASH. Buat fail teks bernama pelanggan.txt dengan kandungan berikut. Setiap baris fail ini mengandungi maklumat mengenai empat bidang. Ini adalah ID, Nama, alamat dan nombor telefon bimbit pelanggan yang dipisahkan oleh '/ '.

pelanggan.txt

AL4934 / Charles M Brunner / 4838 Beeghley Street, Huntsville, Alabama / 256-671-7942
CA5455 / Virginia S Mota / 930 Bassel Street, VALLECITO, California / 415-679-5908
IL4855 / Ann A Neale / 1932 Patterson Fork Road, Chicago, Illinois / 773-550-5107

Buat fail bash bernama item_search.bash dengan skrip berikut. Menurut skrip ini, nilai keadaan akan diambil dari pengguna dan dicari di pelanggan.txt fail oleh cengkaman arahan dan diteruskan ke perintah awk sebagai input. Awk akan membaca 2nd dan 4ika bidang setiap baris. Sekiranya nilai input sepadan dengan nilai keadaan pelanggan.txt fail maka ia akan mencetak pelanggan nama dan nombor telefon jika tidak, ia akan mencetak mesej Tidak dijumpai pelanggan .

item_search.bash

#! / bin / bash
membuang 'Masukkan nama negeri:'
membacanegeri
pelanggan='cengkaman '$ negeri'pelanggan.txt| awk -F '/' '{print' Nama Pelanggan: '$ 2,',
No Mudah Alih: '$ 4}'
'
sekiranya [ 'pelanggan $' !='' ];kemudian
membuang pelanggan $
yang lain
membuang 'Tiada pelanggan dijumpai'
menjadi

Jalankan arahan berikut untuk menunjukkan hasilnya.

$kucingpelanggan.txt
$bashitem_search.bash

Pengeluaran:

Pergi ke Kandungan

awk dengan sed

Alat carian Linux yang lain adalah sed . Perintah ini dapat digunakan untuk mencari dan mengganti teks dari fail apa pun. Contoh berikut menunjukkan penggunaan arahan awk dengan sed arahan. Di sini, arahan sed akan mencari semua nama pekerja bermula dengan ‘ J 'Dan meneruskan arahan awk sebagai input. awk akan mencetak pekerja nama dan ID selepas memformat.

$kucingpekerja.txt
$sed -n '/ J / p'pekerja.txt| awk -F ' t' '{printf'% s (% s) n ', $ 2, $ 1}'

Pengeluaran:

Pergi ke Kandungan

Kesimpulan:

Anda boleh menggunakan perintah awk untuk membuat berbagai jenis laporan berdasarkan data tabel atau yang dipisahkan setelah menyaring data dengan betul. Harap, anda akan dapat mengetahui bagaimana perintah awk berfungsi setelah mengamalkan contoh yang ditunjukkan dalam tutorial ini.