awk

Awk ile String Dosyası Nasıl Bölünür

Awk ile String Dosyası Nasıl Bölünür
Linux awk komutu (geliştiricilerin adlarından kısaltılmıştır; Aho, Weinberger ve Kernighan), bir dizi dosyasını işlemek ve analiz etmek için harika bir yoldur. Dosyaların daha bilgilendirici olması için satır ve sütun şeklinde düzenlenmesi gerekir. Ardından, awk'yi bu dosyalarda şunları yapmak için kullanabilirsiniz:

Bu yazıda, awk komutunun temel kullanımını ve bir dizi dosyasını bölmek için nasıl kullanılabileceğini açıklayacağız. Bu makaledeki örnekleri bir Debian 10 Buster sisteminde gerçekleştirdik, ancak çoğu Linux dağıtımında kolayca çoğaltılabilirler.

Kullanacağımız örnek dosya

awk komutunun kullanımını göstermek için kullanacağımız stringlerin örnek dosyası aşağıdaki gibidir:

Örnek dosyanın her bir sütunu şunu gösterir:

Örnek 1: Bir dosyanın tüm satırlarını yazdırmak için Awk kullanın

Belirtilen bir dosyanın her satırını yazdırmak, awk komutunun varsayılan davranışıdır. awk komutunun aşağıdaki sözdiziminde, awk'nin yazdırması gereken herhangi bir kalıp belirtmiyoruz, bu nedenle komutun "yazdır" eylemini dosyanın tüm satırlarına uygulaması gerekiyor.

Sözdizimi:

$ awk 'print' dosya adı.Txt

Misal:

Bu örnekte, awk komutuna örnek dosyamın içeriğini satır satır yazdırmasını söylüyorum.

$ awk 'print' örnek_dosyası.Txt

Örnek 2:  Yalnızca belirli bir kalıpla eşleşen satırları yazdırmak için awk kullanın

awk ile bir kalıp belirtebilirsiniz ve komut sadece o kalıpla eşleşen satırları yazdıracaktır.

Sözdizimi:

$ awk '/pattern_to_be_matched/ print' dosya adı.Txt

Misal:

Örnek dosyadan sadece 'B' değişkenini içeren satır(lar)ı yazdırmak istersem aşağıdaki komutu kullanabilirim:

$ awk '/B/ print' örnek_dosyası.Txt

Örneği daha anlamlı kılmak için, sadece 'profesör' olan çalışanlar hakkındaki bilgileri yazdırmama izin verin.

$ awk '/profesör/ baskı' örnek_dosyası.Txt

Komut yalnızca “profesör” dizesini içeren satırları/girişleri yazdırır, böylece verilerden elde edilen daha değerli bilgilere sahip oluruz.

Örnek 3. Yalnızca belirli alanlar/sütunlar yazdırılacak şekilde dosyayı bölmek için awk kullanın

Tüm dosyayı yazdırmak yerine, dosyanın yalnızca belirli sütunlarını yazdırmak için awk yapabilirsiniz. Awk, bir satırdaki beyaz boşlukla ayrılmış tüm sözcükleri varsayılan olarak bir sütun kaydı olarak ele alır. Kaydı $N değişkeninde saklar. $1 ilk kelimeyi temsil ederken, $2 ikinci kelimeyi, $3 dördüncü kelimeyi depolar ve bu böyle devam eder. $0 tüm satırı saklar, böylece örnek 1'de açıklandığı gibi who satırı yazdırılır.

Sözdizimi:

$ awk 'yazdır $N,… .' dosya adı.Txt

Misal:

Aşağıdaki komut, örnek dosyamın yalnızca ilk sütununu(ad) ve ikinci sütununu(konu) yazdıracaktır:

$ awk 'print $1, $2' sample_file.Txt

Örnek 4: Bir desenin eşleştirildiği satır sayısını saymak ve yazdırmak için Awk kullanın

Awk'ye belirtilen bir kalıbın eşleştiği satır sayısını saymasını ve ardından 'sayım' çıktısını vermesini söyleyebilirsiniz.

Sözdizimi:

$ awk '/pattern_to_be_matched/++cnt END print "Count = ", cnt'
dosya adı.Txt

Misal:

Bu örnekte, “ingilizce” konusunu öğreten kişilerin sayısını saymak istiyorum. Bu yüzden awk komutuna “english” kalıbıyla eşleşmesini söyleyeceğim ve bu kalıbın eşleştiği satır sayısını yazdıracağım.

$ awk '/english/++cnt END print "Count = ", cnt' sample_file.Txt

Buradaki sayı örnek dosya kayıtlarından 2 kişinin ingilizce öğrettiğini gösteriyor.

Örnek 5: Yalnızca belirli sayıda karakterden fazla olan satırları yazdırmak için awk kullanın

Bu görev için, "uzunluk" adı verilen yerleşik awk işlevini kullanacağız. Bu işlev, giriş dizesinin uzunluğunu döndürür. Bu nedenle, awk'nin yalnızca karakter sayısından daha fazla veya hatta daha az olan satırları yazdırmasını istiyorsak, uzunluk işlevini aşağıdaki şekilde kullanabiliriz:

Sayıdan büyük karakterler içeren satırları yazdırmak için:

$ awk 'uzunluk($0) > n' dosya adı.Txt

Bir sayıdan daha az karakter içeren satırları yazdırmak için:

$ awk 'uzunluk($0) < n' filename.txt

n, bir satır için belirtmek istediğiniz karakter sayısıdır.

Misal:

Aşağıdaki komut, yalnızca 30'dan fazla karakter içeren örnek dosyamdaki satırları yazdıracaktır:

$ awk 'uzunluk($0) > 30' sample_file.Txt

Örnek 6: Komut çıktısını başka bir dosyaya kaydetmek için awk kullanın

Yeniden yönlendirme operatörünü '>' kullanarak, çıktısını başka bir dosyaya yazdırmak için awk komutunu kullanabilirsiniz. Bunu şu şekilde kullanabilirsiniz:

$ awk 'criteria_to_print" dosya adı.txt > çıktı dosyası.Txt

Misal:

Bu örnekte, yalnızca çalışanların adlarını (sütun 1) yeni bir dosyaya yazdırmak için awk komutumla yeniden yönlendirme operatörünü kullanacağım:

$ awk 'print $1' sample_file.txt > çalışan_adı.Txt

Yeni dosyanın yalnızca çalışanların adlarını içerdiğini cat komutlarıyla doğruladım.

Örnek 7: Bir dosyadan yalnızca boş olmayan satırları yazdırmak için awk kullanın

Awk, çıktıyı filtrelemek için kullanabileceğiniz bazı yerleşik komutlara sahiptir. Örneğin, NF komutu, geçerli giriş kaydındaki alanların sayısını tutmak için kullanılır. Burada, dosyanın yalnızca boş olmayan satırlarını yazdırmak için NF komutunu kullanacağız:

$ awk 'NF > 0' örnek_dosyası.Txt

Açıkçası, boş satırları yazdırmak için aşağıdaki komutu kullanabilirsiniz:

$ awk 'NF < 0' sample_file.txt

Örnek 8: Bir dosyadaki toplam satırları saymak için awk kullanın

NR adlı başka bir yerleşik işlev, belirli bir dosyanın giriş kayıtlarının (genellikle satırların) sayısını tutar. Bir dosyadaki satır sayısını saymak için awk'da bu işlevi aşağıdaki gibi kullanabilirsiniz:

$ awk 'END print NR ' sample_file.Txt

Bu, awk komutuyla dosyaları bölmeye başlamak için ihtiyacınız olan temel bilgilerdi. awk aracılığıyla dize dosyanızdan daha anlamlı bilgiler almak için bu örneklerin birleşimini kullanabilirsiniz.

How to change Left & Right mouse buttons on Windows 10 PC
It's quite a norm that all computer mouse devices are ergonomically designed for right-handed users. But there are mouse devices available which are s...
Emulate Mouse clicks by hovering using Clickless Mouse in Windows 10
Using a mouse or keyboard in the wrong posture of excessive usage can result in a lot of health issues, including strain, carpal tunnel syndrome, and ...
Add Mouse gestures to Windows 10 using these free tools
In recent years computers and operating systems have greatly evolved. There was a time when users had to use commands to navigate through file manager...