Bilgilendirme: Desteğiniz sitenin çalışmaya devam etmesine yardımcı oluyor! Bu sayfada önerdiğimiz hizmetlerden bazıları için bir başvuru ücreti alıyoruz.
Awk, ihtiyacınız olduğunu bilmediğiniz en büyük metin işleme aracıdır. Ancak çok fazla veriyle çalışıyorsanız, muhtemelen, “Bu tablodan ikinci ve beşinci veri sütununu çıkarmak gerçekten iyi olurdu” gibi şeyler düşündünüz. Ve bu, en basit haliyle, Awk’ın yaptığı şeydir.
Contents
Biraz tarih
Çoğu insan ilişkisel bir veritabanının ne olduğunu bilmeden önceki günlerde – ve MySQL’in geliştirilmesinden neredeyse yirmi yıl önce – metin dosyalarında çok fazla veri depolandı. Gerçek şu ki, birçok veri hala bu şekilde saklanıyor. Bu özellikle Unix işletim sistemlerinde geçerlidir. Örneğin, Unix / etc / passwd dosyası yalnızca sistemdeki her kullanıcı için bir satır ve kullanıcının her alanı iki nokta üst üste ile ayrılmış bir metin dosyasıdır. Örneğin:
Yönetici: *: 1001: 2001: Yönetici: / home / root: / home / sh
brian: *: 1002: 2002: Brian Kernighan: / ev / brian: / ev / bash
Büyük sistemlerde, bu tür passwd dosyaları binlerce satır içerebilir. Bilgisayarınızda hesabı olan kişilerin adlarının tam bir listesini istediğiniz zamanlar olabileceğini düşünebilirsiniz. Bu durumda, bu 5. alan olacaktır. 1977’de üç programcı bunu yapmak için genel bir program hazırladı. Bunlar: Alfred Aho, Peter Weinberger ve Brian Kernighan. Ve baş harfleri AWK, Awk’ın adını nasıl aldığını.
Awk Örneği
Varsayılan olarak, Awk alanların boşluk karakterleriyle ayrıldığını varsayar. Ancak Awk’a farklı bir alan ayırıcısı vermek için -F (veya –field-separator) bayrağını kullanarak Awk’a farklı bir karakter kullanmasını söyleyebilirsiniz. / Etc / passwd durumunda, “:” karakterini kullanmak isteriz.
Ayırıcı karakter göz önüne alındığında, Awk ilk alanı $ 1 değişkenine, ikinci alanı $ 2 değişkenine atar. Tüm satır 0 $ a atanır. Bu tanıdık geliyorsa, bunun nedeni Bourne ve Bash kabuk komut dosyalarının komut satırı parametrelerini yönetme biçimi olabilir.
Awk komut dosyaları dosyalara yerleştirilebilse de, genellikle yalnızca Awk komutunun bir parçası olarak komut satırına yerleştirilir. İşte / etc / passwd dosyasında listelenen hesapların tüm kullanıcı ve gerçek adlarını veren basit bir awk komutu:
awk -F: ” / etc / passwd
Bu, yukarıdaki örnek / etc / passwd dosyamızdan aşağıdaki çıktıyı üretir:
admin Yönetici
brian Brian Kernighan
Bu yaklaşık bir Awk programı kadar basittir. Ama muhtemelen bunun tek başına çok güçlü olduğunu görebilirsiniz. Çoğu zaman, insanlar böyle bir dosyayı elektronik tabloya dönüştürür, gereksiz sütunları siler ve sonucu yeni bir metin dosyası olarak kaydeder. Awk ile birkaç saniye içinde aynı şeyi yapabileceğiniz zaman hantal. Ve bu sadece başlangıç. Çıktı koşullu yapabilirsiniz; çıktıyı tamamen kontrol edebilirsiniz; sayısal verilerle uğraşıyorsanız, üzerinde hesaplamalar yapabilirsiniz; ve çok daha fazlası.
Awk Kaynakları
Awk öğrenmesi çok kolay bir dildir. Ve bunu yapmak için çok fazla kaynak var. Aşağıda birkaçını inceleyeceğiz.
Çevrimiçi Öğreticiler
Aşağıda en baştan başlayan ve sizi dilin en önemli yönlerine götüren bir dizi öğretici bulunmaktadır. Hangisini en yararlı bulduğuna bağlı.
- Grymoire Awk Öğreticisi: Bruce Barnett’in Awk için mükemmel tanıtımı. Tüm bu Unix eğiticilerine göz atın.
- Genel konular: Örnek ile Awk: bu IBM’den ve Awk öğrenmek için ağrısız bir yol sağlar. İşiniz bittiğinde Bölüm 2’yi kontrol ettiğinizden emin olun..
- Awk Tutorial: Bu, Awk’a Linux makinelerine indirip yükleyerek bile götüren Tutorials Point girişidir..
- Bir Awk Primer: Bu öğretici oldukça hızlı gidiyor, ancak kabuk komut dosyalarından memnunsanız veya geçmişte Awk kullandıysanız, iyi bir seçimdir.
Kitabın
Awk için bir temel sağlayan birkaç iyi kitap var..
- Aho ve Kernighan’ın Awk Programlama Dili: Bu Awk hakkında orijinal kitap. Ancak orijinal geliştiricilerin bu tür kitaplarının aksine, bu gerçekten iyi ve anlaşılması kolaydır.
- sed & Dougherty ve Robbins’ten Awk: Bu, Awk ve akış editörü (sed) ile ilgilenen bir klasik. İkisi genellikle birlikte kullanılır. Ayrıca, sistemler ile rahat olduğunuzda Sed ve Awk: Pocket Reference da ilgi çekicidir..
- AWK Programlama: George Duckett tarafından Sorular ve Cevaplar: bu az ya da çok yemek kitabı ilginç bir Kindle kitabı. Awk düşünme biçiminizi ve kullanılabileceğini düşündüğünüz yolları genişletecek birçok harika soru içerir..
- Etkili awk Programlama: Arnold Robbins tarafından Evrensel Metin İşleme ve Kalıp Eşleştirme: Bu, Awk Programlama Dilinin devamı gibi. Dile derinleşir ve Awk, Gawk’ın Gnu versiyonuna odaklanır.
Awk Uygulamaları
1977’deki ilkinden bu yana bir dizi Awk uygulaması olmuştur. Aslında, 1985’te (Awk Programlama Dili yayınlanmadan önce), Awk büyük ölçüde genişletildi. Bu versiyona genellikle “yeni Awk” veya nawk denir. Şu anda mevcut olan daha popüler sürümlerden bazıları var.
- Gawk: Bu Gnu Projesi’nin Awk uygulaması. Son derece popüler ve diğer dilleri diğer sürümlerden daha iyi destekliyor.
- BWK: Bu “tek gerçek Awk”, çünkü Awk Programlama Dili için kullanılan o. FreeBSD’de yaygın olarak kullanılır.
- Mawk: Bu aslında Mike Brennan tarafından yazılmış, ancak 2009’dan beri Thomas Dickey tarafından korunan ve güncellenen bir versiyon..
- BusyBox: Bu, Awk dahil olmak üzere bir dizi basitleştirilmiş Unix aracı sağlayan genel bir araçtır.
Çevrimiçi Forumlar
Bazen sadece soru sormanız gerekir. Ve internette Awk’ı iyi bilen birçok insan var. İşte sorularınızı yanıtlamak için daha iyi yerlerden bazıları.
- Comp.lang.awk Google Grubu: Bu, kontrol etmeye değer nispeten aktif bir forumdur.
- Stack Overflow Awk Sorular: Bu, Awk ile ilgili olarak etiketlenmiş en yeni soruların bir sayfasıdır. Kendi sorularınızı sormak için harika bir referans ve yer.
- Awk Reddit: Bu Awk için alt dizin. Çok aktif değil, ama etrafında birçok bilgili insan var ve soruların cevaplanması için iyi bir yer.
özet
Awk metin işleme için harika bir dildir. Ve eğer dili yeterince ileri itmek istiyorsanız şaşırtıcı şeyler yapabilir. Aynı zamanda, sözdizimi, çalışma aracı setinizin hızlı bir parçası haline gelebilecek kadar basittir. Burada sunulan kaynaklar size ihtiyacınız olan tüm yardımı sağlayacaktır.