Awk: awk Terminal Komutunu Kullanarak Kabuk Komut Dosyası Oluşturmayı Öğrenme
GNU / Linux türü Özgür İşletim Sistemlerindeki "awk" komutu, diğer komutlardan veya komutlardan gelen verileri işlerken daha fazla kontrole sahip olmamıza yardımcı olan çok güçlü bir komuttur. AWK adı, yazarlarının soyadlarının baş harflerinden türemiştir: Alfred Apeter Weinberger ve Brian KErnighan.
Bu komut, metin işleme için aşağıdakileri yapabileceğimiz bir komut dosyası dili sağlar: Değişkenleri tanımlama, dizeleri ve aritmetik operatörleri kullanma, akış kontrolü ve döngüleri kullanma ve biçimlendirilmiş raporlar oluşturma. Aslında, Awk bir kalıp işleme komutundan daha fazlasıdır, tam anlamıyla bir analiz dilidir.
"Awk" komutuna giriş
AWK, UNIX ardışık düzenlerinin işlevselliğini en üst düzeye çıkararak verileri yönetmek (işlemek / çıkarmak) için ilk çok popüler konsol araçlarından biriydi. Bu yardımcı program tarafından sağlanan dil şu anda neredeyse tüm modern UNIX benzeri İşletim Sistemlerinde bir standarttır, öyle ki temel UNIX Belirtimlerinin bir parçasıdır, bu nedenle çoğu zaman varsayılan olarak zaten yüklüdür.
En yaygın sözdizimi: awk 'program' dosyalarıdır ve 'program' şu olabilir: pattern {action} pattern {action}. Komut, dosya girişini her seferinde bir satır okur. Her sıra sırayla her desenle karşılaştırılır; satırla eşleşen her desen için ilgili eylem gerçekleştirilir.
Gibi basit bir örnek:
awk -F: '$1=="root" {print}' /etc/passwd
ilk alanı / etc / passwd içindeki her satırın kökü olup olmadığını sorar ve alan ayırıcı olarak -F: ile ":" ile yazdırır.
Pratik örnekler
En çok kullanılan komut listesi
En sık kullanılandan en aza doğru sıralanmış Sistem terminalinin geçmişine dayalı bir liste görüntüleyin.
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
Örnek:

Her ana bilgisayar için bağlantı sayısını gösteren Grafik (Tablo)
Ana bilgisayardan her bir IP adresine toplam bağlantı sayısını gösteren metin tabanlı bir ASCII grafik oluşturun.
netstat -an | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print "" }'
Örnek:

Boyuta göre Dizinler Listesi
G, m ve k harflerini kullanarak boyutlarına karşılık gelen etiketleri göstererek en büyüğünden en küçüğüne geçerli yolun dizin listesini ekrana yazdırın.
du --max-depth=1 | sort -r -n | awk '{split("k m g",v); s=1; while($1>1024){$1/=1024; s++} print int($1)" "v[s]"\t"$2}'
Örnek:

Bir Ağ Arayüzünden gelen trafiği göster
Belirli bir ağ arabirimi için çevrimiçi olarak gelen ve giden veri tüketimini kilobayt (kb) cinsinden görüntüleyin.
while [ /bin/true ]; do OLD=$NEW; NEW=`cat /proc/net/dev | grep eth0 | tr -s ' ' | cut -d' ' -f "3 11"`; echo $NEW $OLD | awk '{printf("\rin: % 9.2g\t\tout: % 9.2g", ($1-$3)/1024, ($2-$4)/1024)}'; sleep 1; done
Örnek:

Bir fibonacci sayı serisi edinin
Oluşturulacak 2 temel sayı verilen bir fibonacci modelini takip eden X miktar numaralarının bir listesini oluşturun.
seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'
Örnek:

Dosya yapısının boyuta göre grafik listesi
İşletim sisteminin kökündeki tüm klasörlerin bir listesini grafik (çubuklar) ve içindeki boyutlarının yüzdesi olarak sayısal gösterimlerle birlikte alın.
t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');sudo du / --max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++){printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'
Örnek:

Bir Dizindeki dosya türlerinin bir özetini listeleyin
Bir dizinde bulunan dosya türlerinin bir listesini ona karşılık gelen dosya sayısıyla birlikte gösterin.
find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g
Örnek:

Awk komutunun kullanıldığı bu komut satırı örnekleri, umarım onları çok yararlı bulursunuz. Ve doğrudan konsoldan veya bir komut dosyasına eklenerek dolaylı olarak kullanılmaya hizmet ederler (otomatik görev).
Shell Scripting ile ilgili bir sonraki yazıda diğer komutları inceleyeceğiz.
"Grep" komutu hakkında biraz daha fazla bilgi edinmek istiyorsanız, bu bağlantıyı ziyaret edin "DEBIAN Wiki"Ve kendi Blogumuzda Kabuk Komut Dosyası hakkında daha fazla bilgi edinmek istiyorsanızkonuyla ilgili diğer yayınlarımıza buraya tıklayarak göz atabilirsiniz: FromLinux'ta komut dosyası oluşturma
