Awk:awkターミナルコマンドを使用したシェルスクリプティングの学習

Awk:awkターミナルコマンドを使用したシェルスクリプティングの学習

Awk:awkターミナルコマンドを使用したシェルスクリプティングの学習

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:を指定した「:」を考慮して出力します。

導入例Awk

実例

最もよく使用されるコマンドのリスト

システム端末の履歴に基づいて、使用頻度の高いものから低いものの順にリストを表示します。

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

例:

例1:Awkコマンド

各ホストの接続数を示すグラフ(表)

ホストから各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 "" }'

例:

例2:Awkコマンド

サイズ別のディレクトリのリスト

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}'

例:

例3:Awkコマンド

ネットワークインターフェイスからのトラフィックを表示する

指定したネットワークインターフェイスのインバウンドおよびアウトバウンドのデータ消費量をキロバイト(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}'

例:

例5:Awkコマンド

サイズ別のファイル構造のグラフィックリスト

オペレーティングシステムのルートにあるすべてのフォルダのリストを、グラフィック(バー)および数値表現とともに、その中のサイズのパーセンテージとして取得します。

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"}'

例:

例6:Awkコマンド

ディレクトリ内のファイルタイプの概要を一覧表示する

ディレクトリに含まれるファイルの種類のリストと、それに対応するファイルの数を表示します。

find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g

例:

例8:Awkコマンド

awkコマンドを使用したコマンドラインのこれらの例は、非常に役立つことを願っています。 また、コンソールから直接使用することも、スクリプトに挿入することで間接的に使用することもできます(自動タスク)。

シェルスクリプトに関する次の投稿では、他のコマンドについて説明します。

「grep」コマンドについてもう少し詳しく知りたい場合は、このリンクにアクセスしてください。DEBIAN Wiki」そして、シェルスクリプティングについて詳しく知りたい場合は、独自のブログをご覧ください。、ここをクリックすると、このテーマに関する他の出版物を見ることができます。 FromLinuxでのスクリプト


記事の内容は、次の原則に準拠しています。 編集倫理。 エラーを報告するには、 ここで.

コメント、あなたのコメントを残してください

コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。

  1.   タキシト

    私は最初の例を理解しただけで、他には何も理解していません🙁