2016年1月15日

AWK基礎

$0 行全て
$1,$2... 空白、タブ区切りの「欄」
パターン {アクション}の組み合わせ
基本入力行1行ずつ走査する、パターンに適合する行に対してアクションを行う
パターン、アクションどちらか省略できる
$ awk 'プログラム' 入力ファイル群
$ awk -f programfile 入力ファイル群
数と文字列 二つの型のみ
{ pring $1,$3} 特定の欄の印字
1行読みその行を欄に分解する

NF 欄の数
{print NF, $1, $NF} 欄数、最初と最後の欄を印字

NR 行番号

論理演算
&& || !

制御文
if else while for

配列
名前[添字] = 123

コメント
#行末まで

パターン

入力を読み込む前に実行
複数記述できる
BEGIN

すべての入力を読み終えた後実行
複数記述できる
END

比較演算子
比較は文字列にも使える
<
<=
==
!=
>=
>
~文字列照合
!~文字列照合

/正規表現/

式 ~ /正規表現/

式 !~ /正規表現/

正規表現
超文字
\ ^ $ . [] | () * + ?

エスケープ・シーケンス
\b
\f
\n
\r
\t
\ddd 8進数
\c cそのもの

範囲指定
NR==10, NR==20


アクション
print 式の並び
printf(書式, 式の並び)
if (式) 文
if (式) 文 else 文
while (式) 文
for (式; 式; 式) 文
for (変数 in 配列) 文
do 文 while (式)
break
continue
next
exit
exit 式
{ 文の並び }