Verilerin verimli bir şekilde işlenmesi söz konusu olduğunda, “awk” komutunun esaslarını bilmek çok önemlidir ve bu yazı “awk” komutunun temel özelliklerini kapsar. Önce sözdizimini kontrol edelim:
$ awk [seçenekler] [dosya]Yaygın olarak kullanılan seçeneklerden bazıları aşağıdaki tabloda verilmiştir:
Seçenek | Açıklama |
-F | Bir dosya ayırıcı belirtmek için |
-f | "awk" komut dosyasını içeren dosyayı belirtin |
-v | Değişken atamak için |
Şimdi “awk” komutunun kullanımı ile ilgili bazı örneklere bakalım ve gösteri için adında bir metin dosyası hazırladım testDosyası.Txt:
1. awk komutuyla bir dosyanın sütunu nasıl yazdırılır?
Metin dosyasının belirli bir sütununu almak için “awk” komutu kullanılabilir. Dosyanın içeriğini yazdırmak için şunu kullanın:
$cat testDosyası.Txt
Şimdi, dosyanın ikinci sütununu yazdırmak için şunu kullanın:
$awk 'print $2' testDosyası.Txt
Birden fazla alanı yazdırmak için şu komutu kullanın:
$awk 'print $1,$2,$3' testFile.Txt
Virgül “,” kullanmazsanız, çıktı boşluksuz olacaktır:
$awk 'print $1$2$3' testFile.Txt
2. awk komutuyla normal ifade nasıl kullanılır:
Dizeleri veya herhangi bir ifadeyi eşleştirmek için eğik çizgi "//" kullanırız, örneğin "Tarih" okuyan kişilerin adlarını yazdırmak istiyorsanız, sonra şunu kullanın:
$awk '/History/ print $2' testFile.Txt
Çıktı, yalnızca "Sam" ve "Tommy"nin "Tarih" dersini okuduğunu açıkça gösteriyor.
3. “awk” komutuyla ilişkisel ifade nasıl kullanılır:
Belirli bir alanın içeriğini eşleştirmek için ilişkisel ifade kullanılabilir. Herhangi bir dizeyi veya ifadeyi bir alanla eşleştirmek için alanı belirtin ve aşağıdaki komutta gösterildiği gibi kalıpla karşılaştırma “~” operatörünü kullanın:
$awk '$3 ~/is/ print $2' testFile.Txt
Sütun 2'deki her alanı, sütun 3'te "is" içeren her alana karşı gösteren yukarıdaki çıktı.
Ve yukarıdaki komutun tersi çıktısını almak için “! ~” operatörü:
$awk '3 $! ~/is/ print $2' testFile.Txt
Karşılaştırma için, büyüktür ">" ve küçük " gibi operatörleri de kullanabiliriz<” and equal “=” as well:
$awk '$4>70 yazdır $2' testDosyası.Txt
Çıktı, 70'ten fazla not alan kişilerin isimlerini yazdırdı.
4. awk komutuyla aralık deseni nasıl kullanılır:
Arama için bir aralık da kullanılabilir; aralığı aşağıda belirtilen komutta gösterildiği gibi ayırmak için virgül "" kullanın:
$awk '/Joel/, /Marlene/ yazdır $3' testDosyası.Txt
Çıktı, 2. sütundan "Joel" ile "Marlene" arasındaki aralığın konularını gösterir. Bir aralık tanımlamak için çift eşittir “==” işaretini kullanabiliriz; aşağıdaki örneğe bakın:
$awk '$4 == 80, $4 == 90 print $0' testDosyası.Txt
Çıktı, 2. sütundaki kişilerin adlarını, 4. sütundan "70 ila 80" arasındaki puan aralığını görüntüler.
5. Mantıksal operatör kullanarak desen nasıl birleştirilir:
VEYA “||” VE “&&” gibi mantıksal operatörlerin kullanımı, arama için kalıpları birleştirmenize olanak tanır. Aşağıdaki komutu kullanın
$awk '$4>80 && $6>0.4 2 $ yazdırın' testDosyası.Txt
Yukarıdaki komut, insanların adlarını 80'den daha önemli olan dördüncü alana ve 0'dan büyük olan altıncı alana karşı yazdırır.4. Ve sadece iki kayıt koşulu yerine getiriyor.
6. awk komutu özel ifadeleri:
İki özel ifade var, “BAŞLA" ve "SON”:
BAŞLA: Veriler işlenmeden önce bir eylem gerçekleştirmek için
END: Veriler işlendikten sonra bir eylem gerçekleştirmek için
$awk 'BEGIN print “İşleme başladı”; 2$ yazdır; END print “İşleme sona erdi”' testFile.Txt
7. awk komutunun kullanışlı yerleşik değişkeni:
awk komutu, veri işlemeye yardımcı olan çeşitli değişkenlere sahiptir:
Değişken | Açıklama |
NF | Verilerdeki alan sayısını verir |
NR | Mevcut kaydın numarasını verir |
DOSYA ADI | Şu anda işlenmekte olan dosyanın adını görüntüler |
FS ve OFS | Alan ayırıcı ve Çıkış Alanı ayırıcı |
RS ve ORS | Kayıt ve Çıktı Kayıt Ayırıcısını ayırır |
Örneğin:
$awk 'ENDprint “Dosya adı ” FILENAME “dır” NF “alanları ve” NR “kayıtları”' testFile.Txt
“END” kullanıyoruz, ancak “BEGIN” kullanırsanız çıktı 0 alan ve 0 kayıt verir.
8. Kayıt ayırıcı nasıl değiştirilir:
Kayıttaki varsayılan ayırıcı genellikle boşluktur; virgül "" veya nokta " varsa.” alan ayırıcınız olarak, ardından ayırıcıyla birlikte “FS” seçeneğini kullanın.
Veri alanlarının virgül iki nokta üst üste “:” ile ayrıldığı başka bir dosyamız olsun:
$kedi testiDosya2.Txt$awk 'BEGIN FS= “:” print $2' testFile2.Txt
Dosyanın ayırıcısı iki nokta üst üste olduğundan, ancak “awk” komutu bunun gibi dosyalar için bile faydalı olduğundan, “FS” seçeneğini kullanmanız yeterlidir.
"-F" de kullanılabilir:
$awk -F “:” 'print $2' testFile2.Txt
Varsayılan kayıt ayırıcı "yeni satır"dır ve kayıt ayırıcıyı ":" olarak ayarlamak için şunu kullanın:
$awk 'BEGIN RS = “:”print $1' testFile2.Txt
9. Awk Eylemleri:
Awk eylemleri, “” köşeli ayraçlarla çevrili ve noktalı virgülle ayrılmış birden fazla ifadeye sahip küçük programlardır“;”.
“awk” komutu ile en çok kullanılan ifade “print” ifadesidir. Örneğin, her kayıtla birlikte bir metin yazdırmak için metin dizesini tırnak içinde kullanın:
$awk '“Bir alandır,” $2' test dosyası.Txt
awk kullanarak basit bir toplam işlemi gerçekleştirelim:
$awk 'sum += $4 END printf “%d\n”, toplam' testFile.Txt
10. Bir awk programı oluşturma:
“awk” programlama ile başlayalım, aşağıda verilen programlama sadece çarpma işlemi yapıyor:
BAŞLAben=2
süre(j<4)
print “2'nin” j “ ile çarpımı ” i*j'dir;
j++
Programı “adına göre kaydedinkodum.awk” ve çalıştırmak için terminali açın ve şunu yazın:
$awk -f kodum.awkSonuç:
“awk” komutu, bir dosyanın belirli bir alanını ayırmak gibi metin dosyalarının verilerini işlemek, taramak için kullanışlı bir komuttur; “awk” komutunu kullanıyoruz. Metin dosyalarından herhangi bir biçimde veya desende herhangi bir şeyi aramayı kolaylaştırır. Bu kılavuzda, “awk” komutunun temellerini ve kullanımını anlıyoruz. “awk” komutu verileri doğrular, raporlar oluşturur ve hatta dosyaları ayrıştırır. "awk" basit komutlarını kullanmak, kullanıcıların verileri daha verimli bir şekilde işlemek için küçük programlar yazmasını da sağlar.