Linuxコマンド - awk

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
2020年9月3日 (木) 17:22時点におけるWiki (トーク | 投稿記録)による版 (ページの作成:「== 概要 == <code>awk</code>コマンドとは、入力として受け取った文字列に対して、フィールド区切り文字やレコード区切り文字を指…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

概要

awkコマンドとは、入力として受け取った文字列に対して、フィールド区切り文字やレコード区切り文字を指定して、
列に対する処理を行うためのコマンドである。


awkコマンドの基本書式

awkコマンドの基本書式を以下に記載する。

awk -F'[フィールド区切り文字(複数可能)]' -v '変数=xx' '{awkコマンド}' file



フィールドの出力

標準出力を行うawkコマンドのprintを使用して、awkコマンドで指定したフィールドを取得する。
-F'[フィールド区切り文字]'オプションを指定しない場合、区切り文字にはタブまたは半角スペースが選択される。

1フィールド目を出力 : print $1

# 実行
echo 1 2 3 4 | awk '{print $1}'

# 出力
1


2フィールド目の出力 : print $2

# 実行
echo 1 2 3 4 | awk '{print $2}'

# 出力
2


全ての文字列の出力 : print $0 または print

# 実行
echo 1 2 3 4 | awk '{print $0}'

# 出力
1 2 3 4


# 実行
echo 1 2 3 4 | awk '{print}'

# 出力
1 2 3 4


フィールド区切り文字の指定

フィールド区切り文字として、":"を指定する。

# 実行
echo 1:2:3:4 | awk -F'[:]' '{print $1}'

# 出力
1


また、フィールド区切り文字は複数指定できる。

以下の例では、フィールド区切り文字として、":"と"/"を指定している。
並べて記述することで、":"と"/"がフィールド区切り文字として扱われる。

# 実行
echo 1:2/3:4 | awk -F'[:/]' '{print $3}'

# 出力
3


複数フィールドの出力は、半角スペースで区切られる。(OFSを指定していないため)
OFSについては、後述のセクションを参照すること。

# 実行
echo 1:2/3:4 | awk -F'[:/]' '{print $1,$2}'

# 出力
1 2