awk コマンドは、ファイルに対してパターン マッチングを実行します。 AWK プログラミング言語に基づいています。 awk キーワードの後には、パターン、実行するアクション、およびファイル名が続きます。実行されるアクションは、中括弧内に指定されます。実行するパターンとアクションは、一重引用符で囲んで指定する必要があります。パターンが指定されていない場合、アクションはすべての入力データに対して実行されます。ただし、アクションが指定されていない場合は、行全体が印刷されます。 awk コマンドは、コマンドラインから、または awk スクリプト ファイル内から実行できます。
awk コマンドを使用すると、特定のパターンに一致するテキストを抽出するなど、さまざまな方法でテキスト ファイルを処理できます。特定のパターンに一致するテキストを削除します。特定のパターンに一致するテキストを追加します。
構文
awk コマンドの構文は次のとおりです。
# awk [options] ['patterns {actions}'] {file names}
awk コマンドの実行中に以下のエラーが発生した場合:
選択したディストリビューションに従って、以下のパッケージをインストールしてみてください:
OS 分布 | コマンド |
---|---|
OS X | brew install awk |
Debian | apt-get install gawk |
Ubuntu | apt-get install gawk |
アルパイン | apk add gawk |
Arch Linux | pacman -S gawk |
カリ Linux | apt-get install gawk |
CentOS | yum install gawk |
Fedora | dnf install gawk |
Raspbian | apt-get install gawk |
awk コマンドの例
1. スペースで区切られたファイルの 5 列目 (別名フィールド) を出力します。
# awk '{print $5}' filename
2. 「foo」を含む行の 2 列目をスペース区切りファイルに出力します。
# awk '/foo/ {print $2}' filename
3. フィールド区切り文字として (スペースの代わりに) コンマを使用して、ファイルの各行の最後の列を出力します。
# awk -F ',' '{print $NF}' filename
4. ファイルの最初の列の値を合計し、合計を出力します:
# awk '{s+=$1} END {print s}' filename
5. 1 行目から 3 行おきに印刷:
# awk 'NR%3==1' filename
6. 条件に基づいて異なる値を出力:
# awk '{if ($1 == "foo") print "Exact match foo"; else if ($1 ~ "bar") print "Partial match bar"; else print "Baz"}' filename
7. 10 列目の値が指定された値と等しいすべての行を出力します。
# awk '($10 == value)'
8. 10 列目の値が最小値と最大値の間にあるすべての行を出力します。
# awk '($10 >= min_value && $10 <= max_value)'