awk
パターンとアクション
サーチ…
前書き
awkは、パターンと一致する場合に取られる、中括弧で囲まれたパターンとアクションで構成されます。最も基本的なパターンは空のパターンで、どのレコードにも一致します。最も基本的なアクションは空のアクションで、これは{ print }と等価であり、これは{ print $0 }と等価です。パターンとアクションの両方が空の場合、 awkは単に何もしません。
次のプログラムは入力を単にエコーします。例えば:
awk '{ print }' /etc/passwd
{ print }はデフォルトのアクションであり、真の値がどのレコードとも一致するので、そのプログラムは次のように書き直すことができます:
awk '1' /etc/passwd
最も一般的なパターンのタイプは、おそらくスラッシュで囲まれた正規表現です。次のプログラムは、文字o少なくとも2つの連続した出現を含むすべてのレコードを出力します。たとえば、次のようになります。
awk '/oo+/ { print }' /etc/passwd
ただし、任意の式をパターンとして使用できます。次のプログラムは、グループ0(フィールド4)のユーザーの名前(フィールド1)を表示します。たとえば、次のようになります。
awk -F: '$4 == 0 { print $1 }' /etc/passwd
正確に一致させる代わりに、正規表現と照合することもできます。次のプログラムは、グループIDに少なくとも1つのゼロがあるグループ内のすべてのユーザーの名前を表示します。
awk -F: '$4 ~ /0/ { print $1 }' /etc/passwd
長さで行をフィルタリングする
このパターンを使用すると、長さに応じて行をフィルタリングできます
$cat file
AAAAA
BBBB
CCCC
DDDD
EEEE
$awk 'length($0) > 4 { print $0 }' file
AAAAA
$
とにかく、このパターンは次のコードブロックが実行されるようにします。そして、 AWKのデフォルトアクションが現在の行 {print}ので、これを実行すると同じ結果が得られます:
$awk 'length($0) > 4 ' file
AAAAA
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow