「Awk」の版間の差分
提供: Wikinote
細 |
(→覚え書き) |
||
行4: | 行4: | ||
== 覚え書き == | == 覚え書き == | ||
− | + | === 基本構文 === | |
awk [-F sep] 'command' [file ...] | awk [-F sep] 'command' [file ...] | ||
− | + | セパレータ (デリミタ) は -D ではなく、-F で指定することに注意。 | |
− | + | ||
− | + | === 組み込み変数 === | |
− | + | * FS ― フィールドセパレータ | |
− | + | * NR ― 現レコード数 | |
− | + | * NF ― フィールド数 | |
− | + | * OFS ― 出力フィールドセパレータ (print のカンマ区切りのセパレータ) | |
− | + | * ORS ― 出力レコードセパレータ | |
− | + | ||
− | + | === 演算子 === | |
− | + | * ~ ― マッチしたら真 ($0 ~ /re/) | |
− | + | 他はほぼ C と同じ | |
− | + | ||
− | + | === 制御構文 === | |
− | + | * <code>break</code>, <code>continue</code> ― for や while の中で使う | |
− | + | * <code>next</code> ― 次のレコードへ処理を移す | |
− | + | * <code>exit</code> ― 残りのレコードは見ないで処理を中断 | |
− | + | ||
− | + | === 配列 === | |
− | + | * <code>array[i]</code> ― 一次元配列 | |
− | + | * <code>array[i,j,k]</code> ― 三次元配列 | |
− | + | * <code>array[str]</code> ― 連想配列 | |
− | * | + | ** <code>for (x in array) ...</code> ですべてのキーを取り出し可能 |
− | + | ** <code>if (str in array) ...</code> でキー str があるかどうか | |
− | + | ** <code>array[str] = array[str] "hoge"</code> で連結可能 | |
− | + | ||
− | + | === その他 === | |
+ | * 変数の初期化は不要 | ||
+ | * <code>print $1 $2</code> で連結出力、カンマ区切りでスペース | ||
+ | * <code>{ print $0; } = { print; } = </code> | ||
+ | * 配列は参照渡し | ||
+ | * -f program で自作ライブラリを複数取り込める | ||
+ | * $n (n > 0) を書き換えると、$0 も書き換わる | ||
== サンプルスクリプト == | == サンプルスクリプト == |
2009年5月4日 (月) 19:16時点における版
参考文献
- The GAWK Manual (2.15.6)
- AWK Language Programming (3.0.4)
覚え書き
基本構文
awk [-F sep] 'command' [file ...]
セパレータ (デリミタ) は -D ではなく、-F で指定することに注意。
組み込み変数
- FS ― フィールドセパレータ
- NR ― 現レコード数
- NF ― フィールド数
- OFS ― 出力フィールドセパレータ (print のカンマ区切りのセパレータ)
- ORS ― 出力レコードセパレータ
演算子
- ~ ― マッチしたら真 ($0 ~ /re/)
他はほぼ C と同じ
制御構文
-
break
,continue
― for や while の中で使う -
next
― 次のレコードへ処理を移す -
exit
― 残りのレコードは見ないで処理を中断
配列
-
array[i]
― 一次元配列 -
array[i,j,k]
― 三次元配列 -
array[str]
― 連想配列-
for (x in array) ...
ですべてのキーを取り出し可能 -
if (str in array) ...
でキー str があるかどうか -
array[str] = array[str] "hoge"
で連結可能
-
その他
- 変数の初期化は不要
-
print $1 $2
で連結出力、カンマ区切りでスペース -
{ print $0; } = { print; } =
- 配列は参照渡し
- -f program で自作ライブラリを複数取り込める
- $n (n > 0) を書き換えると、$0 も書き換わる
サンプルスクリプト
Wiki 用に空白を挿入する
Wiki では、行が空白から始まっていると、以下のように固定幅フォントでタイプした通りに表示される。
ソースや出力結果などは通常これを用いる。
いちいち手作業で空白を入れるのは面倒なので (vim で C-v I はまあ許せるとして) gawk スクリプトにする。これはお手軽。
[hagio@localhost hagi_utils]$ cat addspace.gawk | ./addspace.gawk #!/bin/gawk -f { print " " $0 }
ただ、コマンド行はスペースが入らないので注意すること。>自分