GNU / Linuxタイプの無料オペレーティングシステムの「awk」コマンドは非常に強力なコマンドであり、他のコマンドまたはコマンドコマンドからのデータを処理するときに制御を強化するのに役立ちます。 AWKという名前は、その作者の姓の頭文字に由来しています:アルフレッド Aホー、ピーター Wアインバーガー、ブライアン Kエルニガン。
このコマンドは、次のことができるテキスト処理用のスクリプト言語を提供します。変数の定義、文字列と算術演算子の使用、フロー制御とサイクルの使用、およびフォーマットされたレポートの生成。 実際、Awkは単なるパターン処理コマンドではなく、セマンティック分析言語全体です。
「awk」コマンドの概要
AWKは、UNIXパイプラインの機能を最大化することによってデータを管理(処理/抽出)するための最初の非常に人気のあるコンソールユーティリティのXNUMXつでした。 このユーティリティによって提供される言語は、現在、ほとんどすべての最新のUNIXタイプのオペレーティングシステムの標準であり、基本的なUNIX仕様の一部であるため、通常、デフォルトでほとんどのオペレーティングシステムにすでにインストールされています。
その最も一般的な構文は次のとおりです。awk'program 'ファイルおよび' program 'は次のようになります:pattern {action} pattern {action}。 このコマンドは、一度にXNUMX行ずつ入力されたファイルを読み取ります。 各行は、各パターンと順番に比較されます。 行に一致するパターンごとに、対応するアクションが実行されます。
次のような簡単な例:
awk -F: '$1=="root" {print}' /etc/passwd
/ etc / passwdの各行のルートであるかどうかを最初のフィールドに要求し、フィールド区切り文字として-F:を指定した「:」を考慮して出力します。
実例
最もよく使用されるコマンドのリスト
システム端末の履歴に基づいて、使用頻度の高いものから低いものの順にリストを表示します。
history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
例:
各ホストの接続数を示すグラフ(表)
ホストから各IPアドレスへの接続の総数を示すASCIIテキストベースのグラフを作成します。
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 "" }'
例:
サイズ別のディレクトリのリスト
g、m、および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}'
例:
ネットワークインターフェイスからのトラフィックを表示する
指定したネットワークインターフェイスのインバウンドおよびアウトバウンドのデータ消費量をキロバイト(kb)でオンラインで表示します。
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
例:
フィボナッチ番号シリーズを入手する
構築する2つの基本番号を指定して、fibonacciパターンに従ってX個の数量番号のリストを作成します。
seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'
例:
サイズ別のファイル構造のグラフィックリスト
オペレーティングシステムのルートにあるすべてのフォルダのリストを、グラフィック(バー)および数値表現とともに、その中のサイズのパーセンテージとして取得します。
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"}'
例:
ディレクトリ内のファイルタイプの概要を一覧表示する
ディレクトリに含まれるファイルの種類のリストと、それに対応するファイルの数を表示します。
find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g
例:
awkコマンドを使用したコマンドラインのこれらの例は、非常に役立つことを願っています。 また、コンソールから直接使用することも、スクリプトに挿入することで間接的に使用することもできます(自動タスク)。
シェルスクリプトに関する次の投稿では、他のコマンドについて説明します。
「grep」コマンドについてもう少し詳しく知りたい場合は、このリンクにアクセスしてください。DEBIAN Wiki」そして、シェルスクリプティングについて詳しく知りたい場合は、独自のブログをご覧ください。、ここをクリックすると、このテーマに関する他の出版物を見ることができます。 スクリプト作成 DesdeLinux
私は最初の例を理解しただけで、他には何も理解していません🙁