awk

AWK Linux'ta Nasıl Kullanılır

AWK Linux'ta Nasıl Kullanılır

Linux'un sunduğu yardımcı programlar genellikle UNIX tasarım felsefesini takip eder. Herhangi bir araç küçük olmalı, G/Ç için düz metin kullanmalı ve modüler bir şekilde çalışmalıdır. Miras sayesinde, sed ve awk gibi araçların yardımıyla en iyi metin işleme işlevlerinden bazılarına sahibiz.

Linux'ta, awk aracı tüm Linux dağıtımlarında önceden yüklenmiş olarak gelir. AWK'nın kendisi bir programlama dilidir. AWK aracı, AWK programlama dilinin yalnızca bir yorumlayıcısıdır. Bu kılavuzda, AWK'nın Linux'ta nasıl kullanılacağına bakın.

AWK kullanımı

AWK aracı, metinler öngörülebilir bir biçimde düzenlendiğinde en kullanışlıdır. Tablo verilerini ayrıştırma ve değiştirme konusunda oldukça iyidir. Tüm metin dosyasında satır satır çalışır.

Awk'nin varsayılan davranışı boşluklar (boşluklar, sekmeler vb.) kullanmaktır.) alanları ayırmak için. Neyse ki, Linux'taki yapılandırma dosyalarının çoğu bu kalıbı takip eder.

Temel sözdizimi

awk'nin komut yapısı böyle görünüyor.

$ awk'// ; ; '

Komutun bölümleri oldukça açıklayıcı. Awk, arama veya eylem bölümü olmadan çalışabilir. Hiçbir şey belirtilmezse, eşleşmedeki varsayılan eylem yalnızca yazdırma olacaktır. Temel olarak, awk dosyada bulunan tüm eşleşmeleri yazdırır.

Belirtilen bir arama düzeni yoksa, awk dosyanın her satırında belirtilen eylemleri gerçekleştirir.

Her iki kısım da verilirse, awk mevcut satırın onu yansıtıp yansıtmadığını belirlemek için kalıbı kullanır. Eşleşirse, awk belirtilen eylemi gerçekleştirir.

awk öğesinin yeniden yönlendirilen metinler üzerinde de çalışabileceğini unutmayın. Bu, komutun içeriğini eyleme geçmek için awk öğesine borulayarak başarılabilir. Linux boru komutu hakkında daha fazla bilgi edinin.

Demo amacıyla, işte örnek bir metin dosyası. 10 satır, satır başına 2 kelime içerir.

$ kedi örneği.Txt

Düzenli ifade

awk'yi güçlü bir araç yapan temel özelliklerden biri, düzenli ifadenin (kısaca regex) desteklenmesidir. Normal ifade, belirli bir karakter modelini temsil eden bir dizedir.

İşte en yaygın düzenli ifade sözdizimlerinin bir listesi. Bu normal ifade sözdizimleri yalnızca awk'ye özgü değildir. Bunlar neredeyse evrensel regex sözdizimleridir, bu nedenle bunlara hakim olmak, normal ifade içeren diğer uygulamalarda/programlamada da yardımcı olacaktır.

  • Temel karakterler: Tüm alfasayısal karakterler alt çizgi (_) vb.
    • Karakter seti: İşleri kolaylaştırmak için normal ifadede karakter grupları var. Örneğin, büyük harf (A-Z), küçük harf (a-z) ve sayısal rakamlar (0-9).
  • Meta karakterler: Bunlar, sıradan karakterleri genişletmenin çeşitli yollarını açıklayan karakterlerdir.
    • dönem (.): Konumdaki herhangi bir karakter eşleşmesi geçerlidir (yeni satır hariç).
    • yıldız işareti (*): Kendisinden önce gelen karakterin sıfır veya daha fazla varlığı geçerlidir.
    • Köşeli ayraç ([]): Bu konumda, parantez içindeki herhangi bir karakter eşleşirse eşleşme geçerlidir. Karakter setleri ile birleştirilebilir.
    • Şapka (^): Maç çizginin başında olmak zorunda.
    • Dolar ($): Maç çizginin sonunda olmak zorunda.
    • Ters eğik çizgi (\): Herhangi bir meta karakterin gerçek anlamda kullanılması gerekiyorsa.

Metni yazdırma

Bir metin dosyasının tüm içeriğini yazdırmak için yazdır komutunu kullanın. Arama kalıbı durumunda, tanımlanmış bir kalıp yoktur. Yani, awk tüm satırları yazdırır.

$ awk 'print' örneği.Txt

Burada “print”, girdinin içeriğini yazdıran bir AWK komutudur.

Dizi arama

AWK, verilen metin üzerinde temel bir metin araması yapabilir. Desen bölümünde, bulunması gereken metin olmalıdır.

Aşağıdaki komutta, awk dosya örneğinin tüm satırlarında "hızlı" metnini arayacaktır.Txt.

$ awk '/hızlı/' örneği.Txt

Şimdi, aramaya daha fazla ince ayar yapmak için bazı normal ifadeler kullanalım. Aşağıdaki komut, başında "kahverengi" olan tüm satırları yazdıracaktır.

$ awk '/^kahverengi/' örneği.Txt

Bir satırın sonunda bir şey bulmaya ne dersin?? Aşağıdaki komut, sonunda "hızlı" olan tüm satırları yazdıracaktır.

$ awk '/hızlı$/' örneği.Txt

Vahşi kart deseni

Bir sonraki örnek, şapkanın kullanımını gösterecek (.). Burada “e” karakterinden önce herhangi iki karakter olabilir.

$ awk '/… e/'  örneği.Txt

Joker karakter deseni (yıldız işareti kullanarak)

Konumda herhangi bir sayıda karakter varsa ne olur?? Konumdaki olası herhangi bir karakterle eşleştirmek için yıldız işaretini (*) kullanın. Burada AWK, "the"den sonra herhangi bir miktarda karakter içeren tüm satırlarla eşleşecektir.

$ awk '/the*/' örneği.Txt

parantez ifadesi

Aşağıdaki örnek, parantez ifadesinin nasıl kullanılacağını gösterecek. Köşeli ayraç ifadesi, konumda, köşeli ayraç içine alınmış karakter kümesiyle eşleşmesi durumunda eşleşmenin geçerli olacağını söyler. Örneğin, aşağıdaki komut geçerli eşleşmeler olarak “The” ve “Tee” ile eşleşecektir.

$ awk '/T[he]e/' örneği.Txt

Normal ifadede önceden tanımlanmış bazı karakter kümeleri vardır. Örneğin, tüm büyük harfler kümesi “A-Z” olarak etiketlenir. Aşağıdaki komutta, awk büyük harf içeren tüm kelimelerle eşleşecektir.

$ awk '/[A-Z]/' örneği.Txt

Parantez ifadeli karakter kümelerinin aşağıdaki kullanımına bir göz atın.

  • [0-9]: Tek bir rakamı gösterir
  • [a-z]: Tek bir küçük harf belirtir
  • [A-Z]: Tek bir büyük harf belirtir
  • [a-zA-z]: Tek bir harfi belirtir
  • [a-zA-z 0-9]: Tek bir karakter veya rakamı belirtir.

Awk önceden tanımlanmış değişkenler

AWK, bir dizi önceden tanımlanmış ve otomatik değişkenle birlikte gelir. Bu değişkenler, AWK ile program ve komut dosyası yazmayı kolaylaştırabilir.

İşte karşılaşacağınız en yaygın AWK değişkenlerinden bazıları.

  • DOSYA ADI: Geçerli girdi dosyasının dosya adı.
  • RS: Kayıt ayırıcı. AWK'nın doğası gereği, verileri birer birer kayıt olarak işler. Burada bu değişken, veri akışını kayıtlara bölmek için kullanılan sınırlayıcıyı belirtir. Varsayılan olarak, bu değer yeni satır karakteridir.
  • NR: Geçerli giriş kayıt numarası. RS değeri varsayılan olarak ayarlanmışsa, bu değer mevcut giriş satır numarasını gösterecektir.
  • FS/OFS: Alan ayırıcı olarak kullanılan karakter(ler). AWK, bir kez okunduğunda bir kaydı farklı alanlara böler. Sınırlayıcı, FS değeriyle tanımlanır. Yazdırırken, AWK tüm alanlara yeniden katılır. Ancak şu anda AWK, FS ayırıcısı yerine OFS ayırıcısını kullanır. Genel olarak, hem FS hem de OFS aynıdır ancak böyle olmaları zorunlu değildir.
  • NF: Geçerli kayıttaki alan sayısı. Varsayılan değer "boşluk" kullanılırsa, geçerli kayıttaki sözcük sayısıyla eşleşir.
  • ORS: Çıkış verileri için kayıt ayırıcı. Varsayılan değer yeni satır karakteridir.

Onları çalışırken kontrol edelim. Aşağıdaki komut, örnekten 2. satırı 4. satıra yazdırmak için NR değişkenini kullanacaktır.Txt. AWK ayrıca mantıksal ve (&&) gibi mantıksal operatörleri de destekler.

$ awk 'NR > 1 && NR < 5' sample.txt

Bir AWK değişkenine belirli bir değer atamak için aşağıdaki yapıyı kullanın.

$ awk'// ; ; ' =,

Örneğin, girdi dosyasındaki tüm boş satırları kaldırmak için, RS değerini temelde hiçbir şey olarak değiştirin. Belirsiz bir POSIX kuralı kullanan bir numara. RS değeri boş bir dize ise, kayıtların bir veya daha fazla boş satır içeren yeni satırdan oluşan bir diziyle ayrıldığını belirtir. POSIX'te içeriği olmayan boş bir satır tamamen boştur. Ancak, satır boşluk içeriyorsa, "boş" olarak kabul edilmez.

$ awk 'print' RS=" örneği.Txt

Ek kaynaklar

AWK, tonlarca özelliğe sahip güçlü bir araçtır. Bu kılavuz birçoğunu kapsamakla birlikte, yine de yalnızca temel bilgilerdir. AWK'da uzmanlaşmak bundan daha fazlasını alacak. Bu kılavuz, araca güzel bir giriş olmalıdır.

Araçta gerçekten ustalaşmak istiyorsanız, işte kontrol etmeniz gereken bazı ek kaynaklar.

  • Boşluğu kırp
  • Koşullu bir ifade kullanma
  • Bir dizi sütun yazdır
  • AWK ile normal ifade
  • 20 AWK örneği

İnternet bir şeyler öğrenmek için oldukça iyi bir yer. Çok ileri düzey kullanıcılar için AWK temelleri hakkında çok sayıda harika eğitim var.

Son düşünce

Umarım bu kılavuz, AWK temellerinin iyi anlaşılmasına yardımcı olmuştur. Biraz zaman alabilse de, AWK'da ustalaşmak, verdiği güç açısından son derece ödüllendiricidir.

Mutlu bilgisayar!

Tam Ekran Linux Uygulamalarında ve Oyunlarında OSD Yerleşimi Nasıl Gösterilir
Tam ekran oyunlar oynamak veya uygulamaları dikkat dağıtmayan tam ekran modunda kullanmak, bir panelde veya görev çubuğunda görünen ilgili sistem bilg...
En İyi 5 Oyun Yakalama Kartı
YouTube'da oyun akışlarını hepimiz gördük ve sevdik. PewDiePie, Jakesepticye ve Markiplier, oyun deneyimlerini yükleyerek ve izleyicileri en yeni oyun...
Linux'ta Oyun Nasıl Geliştirilir
On yıl önce, pek çok Linux kullanıcısı en sevdikleri işletim sisteminin bir gün ticari video oyunları için popüler bir oyun platformu olacağını tahmin...