Perintah "awk" dalam Sistem Operasi Percuma jenis GNU / Linux adalah perintah yang sangat kuat, yang membantu kita memiliki kawalan yang lebih besar ketika memproses data dari perintah lain atau perintah perintah. Nama AWK berasal dari inisial nama keluarga pengarangnya: Alfred Aho, peter Weinberger, dan Brian Kenighan.
Perintah ini menyediakan bahasa skrip untuk pemprosesan teks yang dapat kita gunakan: Menentukan pemboleh ubah, menggunakan rentetan dan operator aritmetik, menggunakan kawalan aliran dan kitaran, dan menghasilkan laporan berformat. Sebenarnya, Awk lebih dari sekadar perintah pemprosesan corak, itu adalah keseluruhan bahasa analisis semantik.
Pengenalan kepada arahan "awk"
AWK adalah salah satu utiliti konsol pertama yang sangat popular untuk mengurus (mengendalikan / mengekstrak) data dengan memaksimumkan fungsi saluran paip UNIX. Bahasa yang disediakan oleh utiliti ini pada masa ini merupakan standard dalam hampir semua Sistem Operasi jenis UNIX moden, sehingga merupakan sebahagian daripada Spesifikasi UNIX asas, jadi biasanya sudah terpasang di kebanyakannya secara lalai.
Sintaksnya yang paling biasa adalah: awk 'program' fail dan di mana 'program' boleh: pattern {action} pattern {action}. Perintah membaca input fail satu baris pada satu masa. Setiap baris dibandingkan dengan setiap corak mengikut urutan; Untuk setiap corak yang sesuai dengan baris, tindakan yang sesuai dilakukan.
Contoh mudah seperti:
awk -F: '$1=="root" {print}' /etc/passwd
ia meminta bidang pertama jika merupakan akar bagi setiap baris di / etc / passwd dan mencetaknya dengan mempertimbangkan ":" dengan -F: sebagai pemisah medan.
Contoh praktikal
Senarai arahan yang paling banyak digunakan
Lihat senarai berdasarkan sejarah terminal Sistem yang dipesan dari yang paling kerap digunakan hingga paling sedikit.
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
Contoh:
Grafik (Jadual) dengan bilangan sambungan untuk setiap hos
Buat grafik berasaskan teks ASCII yang menunjukkan jumlah sambungan dari host ke setiap alamat IP.
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 "" }'
Contoh:
Senarai Direktori mengikut ukuran
Cetak pada skrin senarai direktori jalan semasa dari yang terbesar hingga yang paling kecil menunjukkan label yang sesuai dengan ukurannya menggunakan huruf: g, m, dan k.
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}'
Contoh:
Tunjukkan lalu lintas dari Antaramuka Rangkaian
Lihat penggunaan data masuk dan keluar dalam talian dalam kilobyte (kb) untuk antara muka rangkaian yang ditentukan.
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
Contoh:
Dapatkan siri nombor fibonacci
Buat senarai nombor kuantiti X mengikut corak fibonacci yang diberi 2 nombor asas yang akan dibina.
seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'
Contoh:
Senarai grafik struktur fail mengikut ukuran
Dapatkan Senarai semua folder di akar sistem operasi berserta grafik (bar) dan perwakilan berangka sebagai peratusan ukurannya di dalamnya.
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"}'
Contoh:
Senaraikan ringkasan jenis fail dalam Direktori
Tunjukkan senarai jenis fail yang terdapat dalam direktori bersama dengan jumlah fail yang sesuai dengannya.
find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g
Contoh:
Contoh baris arahan ini menggunakan perintah awk Saya harap anda menganggapnya sangat berguna. Dan ia berfungsi untuk digunakan secara langsung dari konsol atau secara tidak langsung dengan memasukkannya ke dalam skrip (tugas automatik).
Pada posting seterusnya pada Shell Scripting kita akan meneroka perintah lain.
Sekiranya anda ingin mengetahui lebih lanjut mengenai arahan "grep", lawati pautan ini "DEBIANWiki"Dan jika anda ingin mempelajari lebih lanjut mengenai Shell Scripting di Blog kami sendiri, anda boleh melihat penerbitan kami yang lain mengenai perkara ini, dengan mengklik di sini: Skrip DesdeLinux
Saya hanya memahami contoh pertama, tidak lain else