「Awk」の版間の差分
提供: Wikinote
(→Wiki 用に空白を挿入する) |
|||
行38: | 行38: | ||
ソースや出力結果などは通常これを用いる。 | ソースや出力結果などは通常これを用いる。 | ||
− | いちいち手作業で空白を入れるのは面倒なので (vim で C-v I | + | いちいち手作業で空白を入れるのは面倒なので (vim で C-v I はまあ許せるとして) |
− | + | gawk スクリプトにする。これはお手軽。 | |
− | [hagio@localhost hagi_utils]$ cat addspace.gawk | addspace.gawk | + | [hagio@localhost hagi_utils]$ cat addspace.gawk | ./addspace.gawk |
− | + | #!/bin/gawk -f | |
− | + | { | |
− | + | print " " $0 | |
− | + | } | |
ただ、コマンド行はスペースが入らないので注意すること。>自分 | ただ、コマンド行はスペースが入らないので注意すること。>自分 |
2009年4月20日 (月) 13:08時点における版
- 参考 URL
- The GAWK Manual (2.15.6)
- AWK Language Programming (3.0.4)
- 基本構文
awk [-F sep] 'command' [file ...]
- 組み込み変数
- 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 }
ただ、コマンド行はスペースが入らないので注意すること。>自分