AWK, kökeni Unix’in ilk günlerine kadar uzanan güçlü bir veri odaklı programlama dilidir. Başlangıçta ‘tek satırlık’ programlar yazmak için geliştirildi, ancak o zamandan beri tam teşekküllü bir programlama diline dönüştü. AWK, adını yazarlarının baş harfleri olan Aho, Weinberger ve Kernighan’dan alır. Linux ve diğer Unix sistemlerindeki awk komutu, AWK betiklerini çalıştıran yorumlayıcıyı çağırır.
Diğerlerinin yanı sıra gawk (GNU awk), mawk (Minimal awk) ve nawk (Yeni awk) gibi son sistemlerde çeşitli awk uygulamaları mevcuttur. Awk’da ustalaşmak istiyorsanız aşağıdaki örneklere göz atın.
AWK Programlarını Anlama
Awk’da yazılan programlar, sadece bir çift kalıp ve eylem olan kurallardan oluşur. Desenler bir küme ayracı {} içinde gruplandırılır ve awk desenle eşleşen metinler bulduğunda eylem kısmı tetiklenir. Awk, tek satırlık yazılar yazmak için geliştirilmiş olsa da, deneyimli kullanıcılar onunla kolayca karmaşık komut dosyaları yazabilir.
AWK programları, büyük ölçekli dosya işleme için çok kullanışlıdır. Özel karakterler ve ayırıcılar kullanarak metin alanlarını tanımlar. Ayrıca diziler ve döngüler gibi üst düzey programlama yapıları sunar. Bu nedenle, düz awk kullanarak sağlam programlar yazmak çok uygundur.
Linux’ta awk Komutunun Pratik Örnekleri
Yöneticiler normalde diğer dosya manipülasyon türlerinin yanı sıra veri çıkarma ve raporlama için awk kullanır. Aşağıda, awk’ı daha ayrıntılı olarak tartıştık. Komutları dikkatlice izleyin ve tam bir anlayış için terminalinizde deneyin.
1. Metin Çıktısından Belirli Alanları Yazdırın
En yaygın kullanılan Linux komutları, çıktılarını çeşitli alanları kullanarak görüntüler. Normalde, bu tür verilerden belirli bir alanı çıkarmak için Linux cut komutunu kullanırız. Ancak, aşağıdaki komut, awk komutunu kullanarak bunu nasıl yapacağınızı gösterir.
$ who | awk '{print $1}'
Bu komut, who komutunun çıktısından yalnızca ilk alanı görüntüler. Böylece, şu anda oturum açmış olan tüm kullanıcıların kullanıcı adlarını alacaksınız. Burada, $1 ilk alanı temsil eder. N’inci alanı çıkarmak istiyorsanız $N kullanmanız gerekir.
2. Metin Çıktısından Birden Çok Alan Yazdırın
Awk yorumlayıcısı, istediğimiz sayıda alanı yazdırmamıza izin verir. Aşağıdaki örnekler, who komutunun çıktısından ilk iki alanı nasıl çıkaracağımızı gösterir.
$ who | awk '{print $1, $2}'
Çıktı alanlarının sırasını da kontrol edebilirsiniz. Aşağıdaki örnekte ilk olarak who komutu tarafından oluşturulan ikinci sütun ve ardından ikinci alandaki ilk sütun görüntülenir.
$ who | awk '{print $2, $1}'
Tüm verileri görüntülemek için alan parametrelerini ($N) dışarıda bırakmanız yeterlidir.
3. BEGIN İfadelerini Kullanın
BEGIN deyimi, kullanıcıların çıktıdaki bazı bilinen bilgileri yazdırmasına olanak tanır. Genellikle awk tarafından oluşturulan çıktı verilerini biçimlendirmek için kullanılır. Bu ifadenin sözdizimi aşağıda gösterilmiştir.
BEGIN { Actions} {ACTION}
BAŞLANGIÇ bölümünü oluşturan eylemler her zaman tetiklenir. Ardından, awk kalan satırları tek tek okur ve bir şey yapılması gerekip gerekmediğine bakar.
$ who | awk 'BEGIN {print "User\tFrom"} {print $1, $2}'
Yukarıdaki komut, who komutunun çıktısından ayıklanan iki çıkış alanını etiketleyecektir.
4. END İfadelerini Kullanın
İşleminizin sonunda belirli eylemlerin her zaman gerçekleştirildiğinden emin olmak için END deyimini de kullanabilirsiniz. END bölümünü ana eylem kümesinden sonra yerleştirmeniz yeterlidir.
$ who | awk 'BEGIN {print "User\tFrom"} {print $1, $2} END {print "--COMPLETED--"}'
Yukarıdaki komut, verilen dizeyi çıktının sonuna ekleyecektir.
5. Desenleri Kullanarak Arama Yapın
Awk’ın çalışmalarının büyük bir kısmı desen eşleştirme ve normal ifadeyi içerir. Daha önce tartıştığımız gibi, awk her giriş satırındaki kalıpları arar ve eylemi yalnızca bir eşleşme tetiklendiğinde yürütür. Önceki kurallarımız sadece eylemlerden oluşuyordu. Aşağıda, Linux’ta awk komutunu kullanarak desen eşleştirmenin temellerini gösterdik.
$ who | awk '/mary/ {print}'
Bu komut, mary kullanıcısının şu anda oturum açıp açmadığını görecektir. Herhangi bir eşleşme bulunursa tüm satırın çıktısını alacaktır.
6. Dosyalardan Bilgi Çıkarın
Awk komutu dosyalarla çok iyi çalışır ve karmaşık dosya işleme görevleri için kullanılabilir. Aşağıdaki komut, awk’nin dosyaları nasıl işlediğini gösterir.
$ awk '/hello/ {print}' /usr/share/dict/american-english
Bu komut, amerikan-ingilizce sözlük dosyasında ‘hello’ kalıbını arar. Çoğu Linux tabanlı dağıtımda mevcuttur. Böylece, bu dosya üzerinde awk programlarını kolayca deneyebilirsiniz.
7. AWK Komut Dosyasını Kaynak Dosyadan Okuyun
Tek satırlık programlar yazmak yararlı olsa da, tamamen awk kullanarak büyük programlar da yazabilirsiniz. Bunları kaydetmek ve kaynak dosyayı kullanarak programınızı çalıştırmak isteyeceksiniz.
$ awk -f script-file $ awk --file script-file
-f veya –file seçeneği, program dosyasını belirtmemizi sağlar. Ancak, Linux kabuğu program kodunu bu şekilde yorumlamayacağından, komut dosyası içinde tırnak işaretleri (‘ ‘) kullanmanıza gerek yoktur.
8. Giriş Alanı Ayırıcısını Ayarlayın
Alan ayırıcısı, giriş kaydını bölen bir sınırlayıcıdır. -F veya –field-separator seçeneğini kullanarak alan ayırıcıları awk olarak kolayca belirleyebiliriz. Bunun nasıl çalıştığını görmek için aşağıdaki komutlara göz atın.
$ echo "This-is-a-simple-example" | awk -F - ' {print $1} ' $ echo "This-is-a-simple-example" | awk --field-separator - ' {print $1} '
Linux’ta tek satırlık awk komutu yerine komut dosyalarını kullanırken aynı şekilde çalışır.
9. Duruma Göre Bilgileri Yazdırın
Linux cut komutunu önceki bir kılavuzda tartışmıştık. Şimdi, yalnızca belirli kriterler eşleştiğinde awk kullanarak bilgileri nasıl çıkaracağınızı göstereceğiz. Bu kılavuzda kullandığımız test dosyasının aynısını kullanacağız. Öyleyse oraya gidin ve test.txt dosyasının bir kopyasını alın.
$ awk '$4 > 50' test.txt
Bu komut, 50 milyondan fazla nüfusa sahip olan test.txt dosyasından tüm ulusları yazdıracaktır.
10. Normal İfadeleri Karşılaştırarak Bilgileri Yazdırın
Aşağıdaki awk komutu, herhangi bir satırın üçüncü alanının ‘Lira’ desenini içerip içermediğini kontrol eder ve bir eşleşme bulunursa tüm satırı yazdırır. Yine, Linux cut komutunu göstermek için kullanılan test.txt dosyasını kullanıyoruz. Bu nedenle, devam etmeden önce bu dosyaya sahip olduğunuzdan emin olun.
$ awk '$3 ~ /Lira/' test.txt
İsterseniz herhangi bir maçın yalnızca belirli bir bölümünü yazdırmayı seçebilirsiniz.
11. Girişteki toplam satır sayısını sayın
Awk komutu, birçok gelişmiş şeyi kolayca yapmamızı sağlayan birçok özel amaçlı değişkene sahiptir. Böyle bir değişken, geçerli satır numarasını içeren NR’dir.
$ awk 'END {print NR} ' test.txt
Bu komut, test.txt dosyamızda kaç satır olduğunu çıkaracaktır. Önce her satırı yineler ve END’e ulaştığında, bu durumda toplam satır sayısını içeren NR değerini yazdırır.
12. Çıktı Alanı Ayırıcısını Ayarlayın
Daha önce, -F veya –field-separator seçeneğini kullanarak giriş alanı ayırıcılarının nasıl seçileceğini göstermiştik. awk komutu ayrıca çıktı alanı ayırıcısını belirtmemize izin verir. Aşağıdaki örnek, pratik bir örnek kullanarak bunu göstermektedir.
$ date | awk 'OFS="-" {print$2,$3,$6}'
Bu komut, gg-aa-yy biçimini kullanarak geçerli tarihi yazdırır. Varsayılan çıktının nasıl göründüğünü görmek için tarih programını awk olmadan çalıştırın.
13. If Yapısını Kullanma
Diğer popüler programlama dilleri gibi, awk da kullanıcılara if-else yapılarını sağlar. awk içindeki if ifadesi aşağıdaki sözdizimine sahiptir.
if (expression) { first_action second_action }
İlgili eylemler yalnızca koşullu ifade doğruysa gerçekleştirilir. Aşağıdaki örnek, test.txt referans dosyamızı kullanarak bunu göstermektedir.
$ awk '{ if ($4>100) print }' test.txt
Girintiyi kesinlikle korumanıza gerek yoktur.
14. If-Else Yapılarını Kullanma
Aşağıdaki sözdizimini kullanarak kullanışlı if-else merdivenleri oluşturabilirsiniz. Dinamik verilerle ilgilenen karmaşık awk komut dosyaları tasarlarken kullanışlıdırlar.
if (expression) first_action else second_action
$ awk '{ if ($4>100) print; else print }' test.txt
Yukarıdaki komut, dördüncü alan her satır için 100’den büyük olmadığından tüm referans dosyasını yazdıracaktır.
15. Alan genişliğini ayarlayın
Bazen, girdi verileri oldukça dağınıktır ve kullanıcılar bunları raporlarında görselleştirmekte zorlanabilir. Neyse ki awk, boşluklarla ayrılmış bir genişlik listesi tanımlamamıza izin veren FIELDWIDTHS adlı güçlü bir yerleşik değişken sağlar.
$ echo 5675784464657 | awk 'BEGIN {FIELDWIDTHS= "3 4 5"} {print $1, $2, $3}'
Çıktı alanı genişliğini tam olarak istediğimiz gibi kontrol edebildiğimiz için dağınık verileri ayrıştırırken çok kullanışlıdır.
16. Kayıt Ayırıcıyı Ayarlayın
RS veya Kayıt Ayırıcı, kayıtların nasıl ayrılacağını belirlememizi sağlayan başka bir yerleşik değişkendir. Önce bu awk değişkeninin işleyişini gösterecek bir dosya oluşturalım.
$ cat new.txt Melinda James 23 New Hampshire (222) 466-1234 Daniel James 99 Phonenix Road (322) 677-3412
$ awk 'BEGIN{FS="\n"; RS=""} {print $1,$3}' new.txt
Bu komut belgeyi ayrıştıracak ve iki kişinin adını ve adresini tükürecektir.
17. Yazdırma Ortamı Değişkenleri
Linux’taki awk komutu, ENVIRON değişkenini kullanarak ortam değişkenlerini kolayca yazdırmamızı sağlar. Aşağıdaki komut, PATH değişkeninin içeriğini yazdırmak için bunun nasıl kullanılacağını gösterir.
$ awk 'BEGIN{ print ENVIRON["PATH"] }'
ENVIRON değişkeninin bağımsız değişkenini değiştirerek herhangi bir ortam değişkeninin içeriğini yazdırabilirsiniz. Aşağıdaki komut, HOME ortam değişkeninin değerini yazdırır.
$ awk 'BEGIN{ print ENVIRON["HOME"] }'
18. Çıktıdan Bazı Alanları Çıkarın
awk komutu, çıktımızdan belirli satırları çıkarmamızı sağlar. Aşağıdaki komut, test .txt referans dosyamızı kullanarak bunu gösterecektir.
$ awk -F":" '{$2=""; print}' test.txt
Bu komut, her ülke için başkentin adını içeren dosyamızın ikinci sütununu atlayacaktır. Ayrıca, bir sonraki komutta gösterildiği gibi birden fazla alanı atlayabilirsiniz.
$ awk -F":" '{$2="";$3="";print}' test.txt
19. Boş Satırları Kaldırın
Bazen, veriler çok fazla boş satır içerebilir. Boş satırları oldukça kolay bir şekilde kaldırmak için awk komutunu kullanabilirsiniz. Bunun pratikte nasıl çalıştığını görmek için bir sonraki komuta göz atın.
$ awk '/^[ \t]*$/{next}{print}' new.txt
Basit bir normal ifade ve next adlı yerleşik bir awk kullanarak dosyadaki tüm boş satırları yeni kaldırdık.txt
20. Sondaki boşlukları kaldırın
Birçok Linux komutunun çıktısı, sondaki boşluklar içerir. Boşluklar ve sekmeler gibi boşlukları kaldırmak için Linux’ta awk komutunu kullanabiliriz. Awk kullanarak bu tür sorunların nasıl çözüleceğini görmek için aşağıdaki komuta göz atın.
$ awk '{sub(/[ \t]*$/, "");print}' new.txt test.txt
Referans dosyalarımıza sondaki bazı boşluklar ekleyin ve awk’nin bunları başarıyla kaldırıp kaldırmadığını doğrulayın. Bunu makinemde başarıyla yaptı.
21. Her satırdaki alan sayısını kontrol edin
Basit bir awk tek astar kullanarak bir satırda kaç alan olduğunu kolayca kontrol edebiliriz. Bunu yapmanın birçok yolu var, ancak bu görev için awk’nın yerleşik değişkenlerinden bazılarını kullanacağız. NR değişkeni bize satır numarasını, NF değişkeni ise alan sayısını verir.
$ awk '{print NR,"-->",NF}' test.txt
Şimdi, test.txt belgemizde satır başına kaç alan olduğunu onaylayabiliriz. Bu dosyanın her satırı 5 alan içerdiğinden, komutun beklendiği gibi çalıştığından eminiz.
22. Geçerli Dosya Adını Doğrulayın
Awk değişkeni FILENAME, geçerli giriş dosya adını doğrulamak için kullanılır. Bunun nasıl çalıştığını basit bir örnekle gösteriyoruz. Ancak, dosya adının açıkça bilinmediği veya birden fazla girdi dosyasının olduğu durumlarda yararlı olabilir.
$ awk '{print FILENAME}' test.txt $ awk '{print FILENAME}' test.txt new.txt
Yukarıdaki komutlar, girdi dosyalarının yeni bir satırını her işlediğinde awk’nın üzerinde çalıştığı dosya adını yazdırır.
23. İşlenen Kayıtların Sayısını Doğrulayın
Aşağıdaki örnek, awk komutu tarafından işlenen kayıtların sayısını nasıl doğrulayabileceğimizi gösterecektir. Çok sayıda Linux sistem yöneticisi rapor oluşturmak için awk kullandığından, bu onlar için çok yararlıdır.
$ awk '{print "Processing Record - ",NR;} END {print "\nTotal Records Processed:", NR;}' test.txt
Eylemlerime net bir genel bakış elde etmek için sık sık bu awk snippet’ini kullanırım. Yeni fikirlere veya eylemlere uyum sağlamak için kolayca ince ayar yapabilirsiniz.
24. Bir Kayıttaki Toplam Karakter Sayısını Yazdırın
Awk dili, bize bir kayıtta kaç karakter bulunduğunu söyleyen length() adlı kullanışlı bir işlev sağlar. Birkaç senaryoda çok kullanışlıdır. Bunun nasıl çalıştığını görmek için aşağıdaki örneğe hızlıca göz atın.
$ echo "A random text string..." | awk '{ print length($0); }'
$ awk '{ print length($0); }' /etc/passwd
Yukarıdaki komut, giriş dizesinin veya dosyanın her satırında bulunan toplam karakter sayısını yazdıracaktır.
25. Belirli Bir Uzunluktan Daha Uzun Tüm Satırları Yazdırın
Yukarıdaki komuta bazı koşullar ekleyebilir ve yalnızca önceden tanımlanmış bir uzunluktan daha büyük olan satırları yazdırmasını sağlayabiliriz. Belirli bir kaydın uzunluğu hakkında zaten bir fikriniz olduğunda kullanışlıdır.
$ echo "A random text string..." | awk 'length($0) > 10'
$ awk '{ length($0) > 5; }' /etc/passwd
Komutu gereksinimlerinize göre değiştirmek için daha fazla seçenek ve/veya argüman ekleyebilirsiniz.
26. Satır, Karakter ve Kelime Sayısını Yazdırın
Linux’ta aşağıdaki awk komutu, belirli bir girdideki satır, karakter ve kelime sayısını yazdırır. Bu işlemi yapmak için NR değişkenini ve bazı temel aritmetiği kullanır.
$ echo "This is a input line..." | awk '{ w += NF; c += length + 1 } END { print NR, w, c }'
Giriş dizesinde 1 satır, 5 kelime ve tam olarak 24 karakter bulunduğunu gösterir.
27. Kelimelerin Sıklığını Hesaplayın
Bir belgenin kelime frekansını hesaplamak için ilişkisel dizileri ve for döngüsünü awk’da birleştirebiliriz. Aşağıdaki komut biraz karmaşık görünebilir, ancak temel yapıları net bir şekilde anladıktan sonra oldukça basittir.
$ awk 'BEGIN {FS="[^a-zA-Z]+" } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }' test.txt
Tek satırlık kod parçacığıyla ilgili sorun yaşıyorsanız, aşağıdaki kodu yeni bir dosyaya kopyalayın ve kaynağı kullanarak çalıştırın.
$ cat > frequency.awk BEGIN { FS="[^a-zA-Z]+" } { for (i=1; i<=NF; i++) words[tolower($i)]++ } END { for (i in words) print i, words[i] }
Ardından -f seçeneğini kullanarak çalıştırın.
$ awk -f frequency.awk test.txt
28. Yeniden Adlandırın Dosyaları AWK kullanarak
Awk komutu, belirli kriterlere uyan tüm dosyaları yeniden adlandırmak için kullanılabilir. Aşağıdaki komut, bir dizindeki tüm .MP3 dosyalarını .mp3 olarak yeniden adlandırmak için awk’nin nasıl kullanılacağını gösterir.
$ touch {a,b,c,d,e}.MP3 $ ls *.MP3 | awk '{ printf("mv \"%s\" \"%s\"\n", $0, tolower($0)) }' $ ls *.MP3 | awk '{ printf("mv \"%s\" \"%s\"\n", $0, tolower($0)) }' | sh
Öncelikle .MP3 uzantılı bazı demo dosyaları oluşturduk. İkinci komut, kullanıcıya yeniden adlandırma başarılı olduğunda ne olacağını gösterir. Son olarak son komut Linux’ta mv komutunu kullanarak yeniden adlandırma işlemini yapar.
29. Bir Sayının Karekökünü Yazdırın
AWK, sayıları değiştirmek için çeşitli yerleşik işlevler sunar. Bunlardan biri sqrt() fonksiyonudur. Belirli bir sayının karekökünü döndüren C benzeri bir fonksiyondur. Bunun genel olarak nasıl çalıştığını görmek için bir sonraki örneğe hızlıca göz atın.
$ awk 'BEGIN{ print sqrt(36); print sqrt(0); print sqrt(-16) }'
Negatif bir sayının karekökünü belirleyemediğiniz için çıktıda sqrt(-12) yerine ‘nan’ adı verilen özel bir anahtar kelime görüntülenecektir.
30. Bir Sayının Logaritmasını Yazdırın
awk fonksiyonu log() bir sayının doğal logaritmasını sağlar. Ancak yalnızca pozitif sayılarla çalışacaktır, bu nedenle kullanıcıların girişlerini doğrulamaya dikkat edin. Aksi takdirde birisi awk programlarınızı kırabilir ve sistem kaynaklarına ayrıcalıksız erişim elde edebilir.
$ awk 'BEGIN{ print log(36); print log(0); print log(-16) }'
36’nın logaritmasını görmeli ve 0’ın logaritmasının sonsuz olduğunu ve negatif bir değerin logunun ‘Sayı Değil’ veya nan olduğunu doğrulamalısınız.
31. Bir Sayının Üstel Değerini Yazdırın
Üstel os a sayısı n, e^n’nin değerini sağlar. Genellikle büyük rakamlarla veya karmaşık aritmetik mantıkla ilgilenen awk kodlarında kullanılır. Yerleşik awk fonksiyonunu exp() kullanarak bir sayının üstel değerini üretebiliriz.
$ awk 'BEGIN{ print exp(30); print log(0); print exp(-16) }'
Ancak awk çok büyük sayılar için üstel hesaplama yapamaz. Bu tür hesaplamaları C gibi düşük seviyeli programlama dillerini kullanarak yapmalı ve değeri awk komut dosyalarınıza beslemelisiniz.
32. AWK Kullanarak Rastgele Sayılar Oluşturun
Rastgele sayılar üretmek için Linux’ta awk komutunu kullanabiliriz. Bu sayılar 0 ila 1 aralığında olacaktır ancak asla 0 veya 1 olmayacaktır. Daha büyük bir rastgele değer elde etmek için sabit bir değeri elde edilen sayıyla çarpabilirsiniz.
$ awk 'BEGIN{ print rand(); print rand()*99 }'
Rand() fonksiyonunun herhangi bir argümana ihtiyacı yoktur. Ek olarak, bu fonksiyon tarafından oluşturulan sayılar tam olarak rastgele değil, sözde rastgeledir. Üstelik bu sayıları koşudan koşuya tahmin etmek oldukça kolaydır. Bu nedenle hassas hesaplamalar için bunlara güvenmemelisiniz.
33. Color Compiler Warnings in Red
Modern Linux compilers will throw warnings if your code does not maintain language standards or has errors that do not halt program execution. The following awk command will print the warning lines generated by a compiler in red.
$ gcc -Wall main.c |& awk '/: warning:/{print "\x1B[01;31m" $0 "\x1B[m";next;}{print}'
This command is useful if you want to pinpoint compiler warnings specifically. You can use this command with any compiler other than GCC; just make sure to change the pattern /: warning:/ to reflect that particular compiler.
34. Dosya Sisteminin UUID Bilgilerini Yazdırın
UUID veya Evrensel Benzersiz Tanımlayıcı, Linux dosya sistemi gibi kaynakları tanımlamak için kullanılabilecek bir sayıdır. Aşağıdaki Linux awk komutunu kullanarak dosya sistemimizin UUID bilgilerini kolayca yazdırabiliriz.
$ awk '/UUID/ {print $0}' /etc/fstab
Bu komut, awk kalıplarını kullanarak /etc/fstab dosyasındaki UUID metnini arar. Dosyadan ilgilenmediğimiz bir yorumu döndürür. Aşağıdaki komut yalnızca UUID ile başlayan satırları almamızı sağlayacaktır.
$ awk '/^UUID/ {print $1}' /etc/fstab
Çıkışı ilk alanla sınırlar. Yani sadece UUID numaralarını alıyoruz.
35. Linux Çekirdek Görüntüsü Sürümünü Yazdırın
Çeşitli Linux dağıtımları tarafından farklı Linux çekirdek görüntüleri kullanılır. Sistemimizin temel aldığı çekirdek görüntüsünü awk kullanarak kolayca yazdırabiliriz. Bunun genel olarak nasıl çalıştığını görmek için aşağıdaki komuta göz atın.
$ uname -a | awk '{print $3}'
İlk önce uname komutunu -a seçeneğiyle yayınladık ve ardından bu verileri awk’ye aktardık. Daha sonra awk kullanarak çekirdek imajının versiyon bilgisini çıkardık.
36. Satırlardan Önce Satır Numaraları Ekleyin
Kullanıcılar satır numarası içermeyen metin dosyalarıyla oldukça sık karşılaşabilmektedir. Neyse ki Linux’ta awk komutunu kullanarak bir dosyaya kolayca satır numaraları ekleyebilirsiniz. Bunun gerçek hayatta nasıl çalıştığını görmek için aşağıdaki örneğe yakından bakın.
$ awk '{ print FNR ". " $0 ;next}{print}' test.txt
Yukarıdaki komut, test.txt referans dosyamızdaki her satırın önüne bir satır numarası ekleyecektir. Bu sorunu çözmek için yerleşik awk değişkeni FNR’yi kullanır.
37. İçeriği Sıraladıktan Sonra Bir Dosya Yazdırın
Tüm satırların sıralı bir listesini yazdırmak için awk’yi de kullanabiliriz. Aşağıdaki komutlar test.txt dosyasındaki tüm ülkelerin adlarını sıralı olarak yazdırır.
$ awk -F ':' '{ print $1 }' test.txt | sort
Bir sonraki komut, /etc/passwd dosyasındaki tüm kullanıcıların oturum açma adını yazdıracaktır.
$ awk -F ':' '{ print $1 }' /etc/passwd | sort
Sıralama komutunu değiştirerek sıralama sırasını kolayca değiştirebilirsiniz.
38. Kılavuz Sayfasını Yazdırın
Kılavuz sayfası, mevcut tüm seçeneklerin yanı sıra awk komutu hakkında ayrıntılı bilgi içerir. Awk komutuna iyice hakim olmak isteyenler için son derece önemlidir.
$ man awk
Eğer karmaşık awk özelliklerini öğrenmek istiyorsanız bu size çok yardımcı olacaktır. Bir sorunla karşılaştığınızda bu belgelere başvurun.
39. Yardım Sayfasını Yazdırın
Yardım sayfası tüm olası komut satırı argümanları hakkında özet bilgiler içerir. Aşağıdaki komutlardan birini kullanarak awk için yardım kılavuzunu çağırabilirsiniz.
$ awk -h $ awk --help
Awk için mevcut tüm seçeneklere hızlı bir genel bakış istiyorsanız bu sayfaya bakın.
40. Print Version Information
Sürüm bilgisi bize bir programın yapısı hakkında bilgi sağlar. awk’nin sürüm sayfası telif hakkı, derleme araçları vb. gibi bilgileri içerir. Bu bilgiyi aşağıdaki awk komutlarından birini kullanarak görüntüleyebilirsiniz.
$ awk -V $ awk --version
Yazının orijinalini buradan okuyabilirsiniz.

Kariyerime 26 yıl önce başladım. Windows ve Linux sistemlerinin kurulumu, yapılandırılması, yönetimi ve bakımı dahil olmak üzere birden fazla sistem üzerinde uzmanlaştım.
Açık kaynak dünyasındaki en son gelişmelerden haberdar olmaktan ve Linux hakkındaki en son araçları, özellikleri ve hizmetleri denemekten hoşlanıyorum.
Son 6 yıldır sistem ve ağ yöneticisi olarak görev yapıyorum ayrıca Pardus Dönüşüm Projesini yönetiyorum ve Pardus İşletim Sisteminin yaygınlaşması adına uğraş gösteriyorum.
Boş zamanlarımda açık kaynaklı uygulamaların Türkçe çevirisine katılıyorum ve The Document Foundation üyesiyim.