20 awk örneği

20 Awk Examples



Linux işletim sisteminde metin verileri veya dosyadan bir rapor aramak ve oluşturmak için birçok yardımcı araç vardır. Kullanıcı, awk, grep ve sed komutlarını kullanarak birçok türde arama, değiştirme ve rapor oluşturma görevini kolaylıkla gerçekleştirebilir. awk sadece bir komut değildir. Hem terminalden hem de awk dosyasından kullanılabilen bir betik dilidir. Diğer betik dilleri gibi değişken, koşullu ifade, dizi, döngüler vb. destekler. Herhangi bir dosya içeriğini satır satır okuyabilir ve alanları veya sütunları belirli bir sınırlayıcıya göre ayırabilir. Ayrıca metin içeriğinde veya dosyada belirli bir dizeyi aramak için normal ifadeyi destekler ve herhangi bir eşleşme bulunursa işlem yapar. awk komutunu ve komut dosyasını nasıl kullanabileceğiniz bu öğreticide 20 faydalı örnek kullanılarak gösterilmiştir.

İçindekiler:

  1. printf ile awk
  2. beyaz boşlukta bölmek için awk
  3. awk sınırlayıcıyı değiştirmek için
  4. sekmeyle ayrılmış verilerle awk
  5. csv verileriyle awk
  6. awk normal ifade
  7. awk büyük/küçük harfe duyarsız normal ifade
  8. nf (alan sayısı) değişkenli awk
  9. awk gensub () işlevi
  10. awk ile Rand() işlevi
  11. awk kullanıcı tanımlı işlev
  12. awk eğer
  13. awk değişkenleri
  14. awk dizileri
  15. awk döngüsü
  16. awk ilk sütunu yazdırmak için
  17. awk son sütunu yazdırmak için
  18. grep ile awk
  19. bash komut dosyasıyla awk
  20. sed ile awk

awk'yi printf ile kullanma

yazdır() işlevi, programlama dillerinin çoğunda herhangi bir çıktıyı biçimlendirmek için kullanılır. Bu işlev ile kullanılabilir awk farklı türde biçimlendirilmiş çıktılar oluşturma komutu. awk komutu esas olarak herhangi bir metin dosyası için kullanılır. adlı bir metin dosyası oluşturun. çalışan.txt alanların sekme (' ') ile ayrıldığı aşağıda verilen içerikle.







çalışan.txt



1001 John sena 40000
1002 Cafer İkbal 60000
1003 Meher Nigar 30000
1004 Jonny Karaciğer 70000

Aşağıdaki awk komutu verileri okuyacaktır. çalışan.txt satır satır dosyalayın ve biçimlendirmeden sonra ilk dosyayı yazdırın. Buraya, %10s çıktının 10 karakter uzunluğunda olacağı anlamına gelir. Çıktının değeri 10 karakterden az ise, değerin önüne boşluklar eklenecektir.



$ awk'{ printf '%10s ', $ 1}'çalışan.txt

Çıktı:





İçeriğe Git



beyaz boşlukta bölmek için awk

Herhangi bir metni bölmek için varsayılan sözcük veya alan ayırıcısı beyaz boşluktur. awk komutu, metin değerini çeşitli şekillerde girdi olarak alabilir. Giriş metni şuradan iletilir: dışarı attı Aşağıdaki örnekte komut. Metin, ' programlamayı severim ' varsayılan ayırıcı tarafından bölünecek, Uzay , ve üçüncü kelime çıktı olarak yazdırılacaktır.

$dışarı attı 'Programlamayı seviyorum' | awk '{ 3$ yazdır }'

Çıktı:

İçeriğe Git

awk sınırlayıcıyı değiştirmek için

awk komutu, herhangi bir dosya içeriği için sınırlayıcıyı değiştirmek için kullanılabilir. Diyelim ki, adında bir metin dosyanız var. telefon.txt aşağıdaki içerikle, dosya içeriğinin alan ayırıcısı olarak ':' kullanılır.

telefon.txt

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

Sınırlayıcıyı değiştirmek için aşağıdaki awk komutunu çalıştırın, ':' tarafından '-' dosyanın içeriğine, telefon.txt .

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

Çıktı:

İçeriğe Git

sekmeyle ayrılmış verilerle awk

awk komutu, metni farklı şekillerde okumak için kullanılan birçok yerleşik değişkene sahiptir. bunlardan ikisi FS ve OFS . FS giriş alanı ayırıcıdır ve OFS çıktı alanı ayırıcı değişkenlerdir. Bu değişkenlerin kullanımları bu bölümde gösterilmiştir. Oluşturmak sekme adlı ayrılmış dosya giriş.txt kullanımlarını test etmek için aşağıdaki içerikle FS ve OFS değişkenler.

giriş.txt

İstemci tarafı komut dosyası dili
Sunucu tarafı komut dosyası dili
Veritabanı sunucusu
Web sunucusu

sekme ile FS değişkenini kullanma

Aşağıdaki komut, her satırı böler giriş.txt sekmesine (' t') dayalı dosya oluşturun ve her satırın ilk alanını yazdırın.

$awk '{ 1$ yazdır }' FS='T'giriş.txt

Çıktı:

sekme ile OFS değişkenini kullanma

Aşağıdaki awk komutu, 9NS ve 5NS alanları 'Ls -l' sütun başlığını yazdırdıktan sonra sekme ayırıcılı komut çıktısı İsim ve Boy . Buraya, OFS değişken, çıktıyı bir sekme ile biçimlendirmek için kullanılır.

$ls -NS
$ls -NS | awk -v OFS='T' 'BAŞLA { printf '%s %s ', 'Ad', 'Boyut'} {yazdır $9,$5}'

Çıktı:

İçeriğe Git

awk CSV verileriyle

Herhangi bir CSV dosyasının içeriği, awk komutu kullanılarak çeşitli şekillerde ayrıştırılabilir. ' adlı bir CSV dosyası oluşturun müşteri.csv ' awk komutunu uygulamak için aşağıdaki içerikle.

müşteri.txt

Kimlik, Ad, e-posta, telefon
1, Sophia, [e-posta korumalı] , (862) 478-7263
2, Amelia, [e-posta korumalı] , (530) 764-8000
3, Emma, ​​[e-posta korumalı] , (542) 986-2390

CSV dosyasının tek alanını okuma

'-F' seçeneği, dosyanın her satırını bölmek için sınırlayıcıyı ayarlamak için awk komutuyla birlikte kullanılır. Aşağıdaki awk komutu, isim alanı müşteri.csv dosya.

$kedimüşteri.csv
$awk -F ',' '{2$ yazdır}'müşteri.csv

Çıktı:

Diğer metinlerle birleştirerek birden çok alanı okuma

Aşağıdaki komut, üç alan yazdıracaktır. müşteri.csv başlık metnini birleştirerek, Ad, E-posta ve Telefon . İlk satırı müşteri.csv dosya her alanın başlığını içerir. NUMARA awk komutu dosyayı ayrıştırdığında değişken dosyanın satır numarasını içerir. Bu örnekte, NR değişken, dosyanın ilk satırını atlamak için kullanılır. Çıktı 2'yi göstereceknd, 3rdve 4NSilk satır hariç tüm satırların alanları.

$awk -F ',' 'NR>1 {yazdır 'Ad:' $2 ', E-posta:' $3 ', Telefon:' $4}'müşteri.csv

Çıktı:

Bir awk komut dosyası kullanarak CSV dosyasını okuma

awk betiği, awk dosyası çalıştırılarak çalıştırılabilir. awk dosyasını nasıl oluşturabileceğiniz ve dosyayı nasıl çalıştırabileceğiniz bu örnekte gösterilmiştir. adlı bir dosya oluşturun awkcsv.awk aşağıdaki kod ile. BAŞLAMAK anahtar sözcüğü, komut dosyasının komut dosyasını yürütmek için awk komutunu bilgilendirmek için komut dosyasında kullanılır. BAŞLAMAK diğer görevleri yürütmeden önce ilk bölüm. Burada alan ayırıcı ( FS ) bölme sınırlayıcısını tanımlamak için kullanılır ve 2ndve 1NSalanlar printf() işlevinde kullanılan formata göre yazdırılacaktır.

awkcsv.awk
BAŞLAMAK{FS= ','} { baskı '% 5s (%s) ',$2,$1}

Çalıştırmak awkcsv.awk içeriği ile dosya müşteri.csv Aşağıdaki komutla dosya.

$awk -Fawkcsv.awk müşteri.csv

Çıktı:

İçeriğe Git

awk normal ifade

Normal ifade, bir metindeki herhangi bir dizeyi aramak için kullanılan bir kalıptır. Farklı türdeki karmaşık arama ve değiştirme görevleri, normal ifade kullanılarak çok kolay bir şekilde yapılabilir. awk komutu ile normal ifadenin bazı basit kullanımları bu bölümde gösterilmiştir.

eşleşen karakterAyarlamak

Aşağıdaki komut kelimeyle eşleşecek aptal ya da bool veya Güzel giriş dizesiyle ve sözcük bulunursa yazdırın. Buraya, Oyuncak bebek eşleşmeyecek ve yazdırılmayacak.

$baskı 'Aptal Güzel Oyuncak bebek bool' | awk '/[FbC]ool/'

Çıktı:

Satırın başında dize aranıyor

'^' sembolü, satırın başlangıcındaki herhangi bir deseni aramak için normal ifadede kullanılır. ' Linux' word, aşağıdaki örnekte metnin her satırının başında aranacaktır. Burada iki satır metinle başlıyor, 'Linux ' ve bu iki satır çıktıda gösterilecektir.

$dışarı attı -Ve 'Linux'u kullanmak ücretsizdir Açık kaynaklı bir yazılımdır LinuxHint (şimdiki değeri)
popüler bir blog sitesi'
| awk '/^Linux/'

Çıktı:

Satırın sonunda dize aranıyor

'$' sembolü, metnin her satırının sonundaki herhangi bir kalıbı aramak için normal ifadede kullanılır. ' Senaryo ' kelimesi aşağıdaki örnekte aranmaktadır. Burada, iki satır kelimeyi içerir, Senaryo satırın sonunda.

$dışarı attı -Ve 'PHP Komut Dosyası JavaScript Görsel Programlama' | awk '/Script$/'

Çıktı:

Belirli bir karakter kümesini atlayarak arama

'^' sembolü, herhangi bir dize modelinin önünde kullanıldığında metnin başlangıcını gösterir. ('/ ^… /') veya tarafından bildirilen herhangi bir karakter kümesinden önce ^ […] . Eğer '^' sembolü üçüncü parantez içinde [^…] kullanılırsa, arama sırasında parantez içindeki tanımlı karakter kümesi çıkarılacaktır. Aşağıdaki komut, ile başlamayan herhangi bir kelimeyi arayacaktır. 'F' ama ' ile biten ool '. Güzel ve bool desen ve metin verilerine göre yazdırılacaktır.

$ baskı 'Aptal Güzel Oyuncak bebek bool' |awk'/ [^ F] ool /'

Çıktı:

İçeriğe Git

awk büyük/küçük harfe duyarsız normal ifade

Varsayılan olarak, normal ifade, dizedeki herhangi bir deseni ararken büyük/küçük harfe duyarlı arama yapar. Normal ifade ile awk komutu ile büyük/küçük harfe duyarsız arama yapılabilir. Aşağıdaki örnekte, daha düşük() işlevi büyük/küçük harfe duyarsız arama yapmak için kullanılır. Burada, giriş metninin her satırının ilk kelimesi kullanılarak küçük harfe dönüştürülecektir. daha düşük() işlev ve normal ifade kalıbıyla eşleştirin. tokmak() fonksiyon da bu amaçla kullanılabilir, bu durumda desen tamamı büyük harfle tanımlanmalıdır. Aşağıdaki örnekte tanımlanan metin, arama kelimesini içerir, 'Ağ ' çıktı olarak yazdırılacak iki satırda.

$dışarı attı -Ve 'Web Tasarım web Geliştirme Çerçeve' | awk 'daha düşük($0) ~ /^web/;'

Çıktı:

İçeriğe Git

NF (alan sayısı) değişkeni ile awk

NF giriş metninin her satırındaki toplam alan sayısını saymak için kullanılan yerleşik bir awk komutu değişkenidir. Birden çok satır ve birden çok sözcük içeren herhangi bir metin dosyası oluşturun. girdi.txt önceki örnekte oluşturulan dosya burada kullanılır.

Komut satırından NF kullanma

Burada, içeriği görüntülemek için ilk komut kullanılır. giriş.txt file ve ikinci komut, dosyanın her satırındaki toplam alan sayısını göstermek için kullanılır. NF değişken.

$ kedi girişi.txt
$ awk '{print NF}' input.txt

Çıktı:

awk dosyasında NF kullanma

adlı bir awk dosyası oluşturun say.awk Aşağıda verilen komut dosyası ile. Bu komut dosyası herhangi bir metin verisi ile çalıştırıldığında, toplam alanları olan her satır içeriği çıktı olarak yazdırılacaktır.

say.awk

{$ yazdır0}
{Yazdır'[Toplam alanlar:'NF']'}

Komut dosyasını aşağıdaki komutla çalıştırın.

$awk -Fsay.awk girdi.txt

Çıktı:

İçeriğe Git

awk gensub () işlevi

getsub() belirli bir sınırlayıcı veya normal ifade modeline dayalı olarak dize aramak için kullanılan bir ikame işlevidir. Bu fonksiyon şurada tanımlanmıştır: 'gawk' varsayılan olarak yüklenmeyen paket. Bu işlevin sözdizimi aşağıda verilmiştir. İlk parametre normal ifade kalıbını veya arama sınırlayıcısını, İkinci parametre değiştirme metnini, üçüncü parametre aramanın nasıl yapılacağını ve son parametre bu işlevin uygulanacağı metni içerir.

Sözdizimi:

gensub(normal ifade, değiştirme, nasıl[, hedef])

Yüklemek için aşağıdaki komutu çalıştırın gawk kullanmak için paket getsub() awk komutuyla çalışır.

$ sudo apt-get kurulum gawk

' adlı bir metin dosyası oluşturun satış bilgileri.txt ' Bu örneği uygulamak için aşağıdaki içerikle. Burada alanlar bir sekme ile ayrılmıştır.

satış bilgileri.txt

benim 700000
800000'iniz
Çar 750000
200000 topla
Cum 430000
Cts 820000

Sayısal alanları okumak için aşağıdaki komutu çalıştırın. satış bilgileri.txt dosyalayın ve tüm satış tutarının toplamını yazdırın. Burada üçüncü parametre olan 'G' global aramayı gösterir. Bu, kalıbın dosyanın tüm içeriğinde aranacağı anlamına gelir.

$awk '{ x=gensub(' ','','G',$2); printf x '+' } SON{ print 0 }'satış bilgileri.txt| M.Ö -NS

Çıktı:

İçeriğe Git

awk ile Rand() işlevi

sıra() fonksiyon 0'dan büyük ve 1'den küçük herhangi bir rastgele sayı üretmek için kullanılır. Bu nedenle, her zaman 1'den küçük bir kesirli sayı üretecektir. 1. printf() işlevini uygulamak için ondalık noktadan sonra iki basamaklı bir kesirli sayı yazdırılacaktır. Aşağıdaki komutu birden çok kez çalıştırırsanız, her seferinde farklı çıktılar alırsınız.

$awk 'BEGIN {printf 'Sayı =%.2f ' ​​, Rand()*10}'

Çıktı:

İçeriğe Git

awk kullanıcı tanımlı işlev

Önceki örneklerde kullanılan tüm işlevler yerleşik işlevlerdir. Ancak, herhangi bir belirli görevi yapmak için awk betiğinizde kullanıcı tanımlı bir işlev bildirebilirsiniz. Bir dikdörtgenin alanını hesaplamak için özel bir işlev oluşturmak istediğinizi varsayalım. Bu görevi yapmak için 'adlı bir dosya oluşturun. alan.awk ' aşağıdaki komut dosyası ile. Bu örnekte, adlı kullanıcı tanımlı bir işlev alan() alanı giriş parametrelerine göre hesaplayan ve alan değerini döndüren komut dosyasında bildirilir. hat almak komutu burada kullanıcıdan girdi almak için kullanılır.

alan.awk

# Alanı hesapla
işlevalan(boy uzunluğu,Genişlik){
dönüşboy uzunluğu*Genişlik
}

# Yürütmeyi başlatır
BAŞLAMAK{
Yazdır'Yükseklik değerini girin:'
getline h< '-'
Yazdır'Genişlik değerini girin:'
getline w< '-'
Yazdır'Alan ='alan(H,içinde)
}

Komut dosyasını çalıştırın.

$awk -Falan.awk

Çıktı:

İçeriğe Git

awk eğer örnek

awk, diğer standart programlama dilleri gibi koşullu ifadeleri destekler. Bu bölümde üç örnek kullanılarak üç tür if ifadesi gösterilmektedir. adlı bir metin dosyası oluşturun. öğeler.txt aşağıdaki içerikle.

öğeler.txt

HDD Samsung 100 $
Fare A4Tech
Yazıcı HP 200 $

Basit eğer örnek :

aşağıdaki komutun içeriğini okuyacaktır. öğeler.txt dosya ve kontrol edin 3rd her satırdaki alan değeri. Değer boşsa, satır numarasıyla birlikte bir hata mesajı yazdıracaktır.

$awk '{ if ($3 == '') print '' NR }' satırında fiyat alanı eksiköğeler.txt

Çıktı:

if-else örneği:

Aşağıdaki komut, eğer 3 ise ürün fiyatını yazdıracaktır.rdsatırda alan var, aksi takdirde bir hata mesajı yazdıracaktır.

$ awk'{ if ($3 == '') print 'Fiyat alanı eksik'
yoksa 'ürün fiyatı ' $3 }' yazdırın
öğeler.txt

Çıktı:

if-else-if örneği:

Aşağıdaki komut terminalden yürütüldüğünde, kullanıcıdan girdi alacaktır. Giriş değeri, koşul doğru olana kadar her bir if koşuluyla karşılaştırılır. Herhangi bir koşul gerçekleşirse, ilgili notu yazdıracaktır. Girilen değer herhangi bir koşulla eşleşmiyorsa, yazdırma başarısız olur.

$awk 'BEGIN { print 'İşareti girin:'
getline işareti<'-'
if (işaret >= 90) 'A+' yazdırın
else if( işareti >= 80) 'A' yazdır
else if( işaretle >= 70) 'B+' yazdır
aksi takdirde 'Başarısız' }' yazdırın

Çıktı:

İçeriğe Git

awk değişkenleri

awk değişkeninin bildirimi, kabuk değişkeninin bildirimine benzer. Değişkenin değerini okumada bir fark vardır. Kabuk değişkeninin değeri okuması için değişken ismiyle birlikte '$' sembolü kullanılır. Ancak değeri okumak için awk değişkeni ile '$' kullanmaya gerek yoktur.

Basit değişken kullanarak:

Aşağıdaki komut adında bir değişken bildirecektir. 'alan' ve bu değişkene bir dize değeri atanır. Değişkenin değeri bir sonraki ifadede yazdırılır.

$awk 'BAŞLA{ site='LinuxHint.com'; siteyi yazdır}'

Çıktı:

Bir dosyadan veri almak için bir değişken kullanma

Aşağıdaki komut kelimeyi arayacaktır 'Yazıcı' dosyanın içinde öğeler.txt . Dosyanın herhangi bir satırı ile başlarsa 'Yazıcı ' o zaman değerini depolayacak 1NS , 2nd ve 3rd alanları üç değişkene ayırır. isim ve fiyat değişkenler yazdırılacaktır.

$ awk'/Yazıcı/ { isim=$1;marka=$2;fiyat=3$;yazdır 'öğe adı=' isim;
'ürün fiyatı=' fiyatı }' yazdır
öğeler.txt

Çıktı:

İçeriğe Git

awk dizileri

awk'da hem sayısal hem de ilişkili diziler kullanılabilir. Awk'deki dizi değişkeni bildirimi, diğer programlama dilleriyle aynıdır. Dizilerin bazı kullanımları bu bölümde gösterilmiştir.

İlişkisel Dizi:

Dizinin dizini, ilişkisel dizi için herhangi bir dize olacaktır. Bu örnekte, üç öğeden oluşan bir ilişkisel dizi bildirilir ve yazdırılır.

$awk 'BAŞLAMAK {
kitaplar['Web Tasarımı'] = 'HTML 5 Öğrenme';
kitaplar['Web Programlama'] = 'PHP ve MySQL'
kitaplar['PHP Framework']='Öğrenme Laravel 5'
printf '%s %s %s ', kitaplar['Web Tasarımı'],kitaplar['Web Programlama'],
kitaplar['PHP Çerçevesi'] }'

Çıktı:

Sayısal Dizi:

Üç öğeden oluşan sayısal bir dizi, sekme ayırılarak bildirilir ve yazdırılır.

$ awk'BAŞLAMAK {
sayı[0] = 80;
sayı[1] = 55;
sayı[2] = 76;

# dizi öğelerini yazdır
printf 'Dizi değerleri: %dT%NST%NS ', sayı[0],sayı[1],sayı[2]; }'

Çıktı:

İçeriğe Git

awk döngüsü

awk tarafından üç tür döngü desteklenir. Bu döngülerin kullanımları burada üç örnek kullanılarak gösterilmiştir.

Döngü sırasında:

Aşağıdaki komutta kullanılan while döngüsü 5 kez yinelenecek ve loop for break deyiminden çıkacaktır.

$ awk 'BAŞLA { n = 1; (n 5) kırılırken; baskı n; n++ } }'

Çıktı:

Döngü için:

Aşağıdaki awk komutunda kullanılan for döngüsü, 1'den 10'a kadar toplamı hesaplayacak ve değeri yazdıracaktır.

$awk 'BAŞLA { toplam=0; için (n = 1; n<= 10; n++) sum=sum+n; print sum }'

Çıktı:

Do while döngüsü:

Aşağıdaki komutun bir do-while döngüsü 10'dan 5'e kadar olan tüm çift sayıları yazdıracaktır.

$awk 'BAŞLANGIÇ {sayaç = 10; do { if (counter%2 ==0) sayacı yazdır; tezgah-- }
while (sayaç > 5) }'

Çıktı:

İçeriğe Git

awk ilk sütunu yazdırmak için

Herhangi bir dosyanın ilk sütunu, awk'da $1 değişkeni kullanılarak yazdırılabilir. Ancak ilk sütunun değeri birden fazla sözcük içeriyorsa, o zaman yalnızca ilk sütunun ilk sözcüğü yazdırılır. Belirli bir sınırlayıcı kullanılarak ilk sütun düzgün şekilde yazdırılabilir. adlı bir metin dosyası oluşturun. öğrenciler.txt aşağıdaki içerikle. Burada, ilk sütun iki kelimenin metnini içerir.

öğrenciler.txt

Kaniz Fatma 30NSgrup
Abir Hossain 35NSgrup
John İbrahim 40NSgrup

Herhangi bir sınırlayıcı olmadan awk komutunu çalıştırın. İlk sütunun ilk kısmı yazdırılacaktır.

$awk '{1$ yazdır}'öğrenciler.txt

Aşağıdaki sınırlayıcı ile awk komutunu çalıştırın. İlk sütunun tam kısmı yazdırılacaktır.

$awk -F '\ s \ s' '{1$ yazdır}'öğrenciler.txt

Çıktı:

İçeriğe Git

awk son sütunu yazdırmak için

$(NF) değişken herhangi bir dosyanın son sütununu yazdırmak için kullanılabilir. Aşağıdaki awk komutları, son sütunun son bölümünü ve tam bölümünü yazdıracaktır. öğrenciler.txt dosya.

$awk '{baskı $(NF)}'öğrenciler.txt
$awk -F '\ s \ s' '{baskı $(NF)}'öğrenciler.txt

Çıktı:

İçeriğe Git

grep ile awk

grep, herhangi bir normal ifadeye dayalı olarak bir dosyada içerik aramak için Linux'un başka bir kullanışlı komutudur. Hem awk hem de grep komutlarının birlikte nasıl kullanılabileceği aşağıdaki örnekte gösterilmiştir. kavramak komut, çalışan kimliğinin bilgilerini aramak için kullanılır, ' 1002 ' itibaren çalışan.txt dosya. grep komutunun çıktısı, giriş verisi olarak awk'ye gönderilecektir. Çalışan kimliğinin maaşına göre %5 ikramiye sayılacak ve basılacaktır, 1002' awk komutuyla.

$kediçalışan.txt
$kavramak '1002'çalışan.txt| awk -F 'T' '{ print $2' $' (3$*5)/100 ' bonusu'} alacak

Çıktı:

İçeriğe Git

BASH dosyası ile awk

Diğer Linux komutları gibi, awk komutu da bir BASH betiğinde kullanılabilir. adlı bir metin dosyası oluşturun. müşteriler.txt aşağıdaki içerikle. Bu dosyanın her satırı dört alan hakkında bilgi içerir. Bunlar, müşterinin kimliği, Adı, adresi ve cep telefonu numarası ile ayrılmış olanlardır. '/ '.

müşteriler.txt

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

adlı bir bash dosyası oluşturun item_search.bash aşağıdaki komut dosyası ile. Bu komut dosyasına göre, durum değeri kullanıcıdan alınacak ve içinde aranacaktır. müşteriler.txt dosyaya göre kavramak komutu ve girdi olarak awk komutuna iletilir. Awk komutu okuyacak 2nd ve 4NS her satırın alanları. Giriş değeri, herhangi bir durum değeriyle eşleşirse müşteriler.txt dosya daha sonra müşterinin yazdıracak isim ve cep numarası , aksi takdirde mesajı yazdırır Müşteri bulunamadı .

item_search.bash

#!/bin/bash
dışarı attı 'Eyalet adını girin:'
okumandurum
müşteriler=``kavramak '$eyalet'müşteriler.txt| awk -F '/' '{print 'Müşteri Adı:' $2, ',
Cep No:' $4}'
``
Eğer [ '$müşteriler' !='' ];sonra
dışarı attı $müşteriler
Başka
dışarı attı 'Müşteri bulunamadı'
olmak

Çıktıları göstermek için aşağıdaki komutları çalıştırın.

$kedimüşteriler.txt
$bashitem_search.bash

Çıktı:

İçeriğe Git

sed ile awk

Linux'un bir başka kullanışlı arama aracı da sed . Bu komut, herhangi bir dosyanın metnini hem aramak hem de değiştirmek için kullanılabilir. Aşağıdaki örnek, awk komutunun aşağıdakilerle kullanımını gösterir: sed emretmek. Burada sed komutu ' ile başlayan tüm çalışan adlarını arayacaktır. J ' ve girdi olarak awk komutuna geçer. awk çalışanı yazdıracak isim ve İD biçimlendirmeden sonra.

$kediçalışan.txt
$sed -n '/J/p'çalışan.txt| awk -F 'T' '{ printf '%s(%s) ', $2, $1 }'

Çıktı:

İçeriğe Git

Çözüm:

Verileri uygun şekilde filtreledikten sonra herhangi bir tablo veya sınırlandırılmış veriye dayalı olarak farklı türde raporlar oluşturmak için awk komutunu kullanabilirsiniz. Umarım, bu eğitimde gösterilen örnekleri uyguladıktan sonra awk komutunun nasıl çalıştığını öğrenebileceksiniz.