Awk: awk Terminal Komutunu Kullanarak Kabuk Komut Dosyası Oluşturmayı Öğrenme

Awk: awk Terminal Komutunu Kullanarak Kabuk Komut Dosyası Oluşturmayı Öğrenme

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.

Tanıtıcı Örnek Awk

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:

Örnek 1: Awk komutu

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:

Örnek 2: Awk komutu

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:

Örnek 3: Awk komutu

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:

Örnek 5: Awk komutu

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:

Örnek 6: Awk komutu

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:

Örnek 8: Awk komutu

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