2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

awkに関するメモ

Posted at

awk

■ 特徴

  • Cに近い
  • 高速
  • awkだけで、処理を実装可能

■ 基本構文

awk パターン {アクション}'

cat text.txt | awk 'NR <= 4 && NR >=1 {value="test"; print $1}'

※ アクションがない場合は、そのまま表示
echo 100 | awk 1


■ 真偽値

  • 0 : False
  • 空文字 : False
  • 上記以外 : True
* TRUEの場合
# echo 100 | awk 1
100

* FALSEの場合
# echo 100 | awk 0

代入を行う際は、戻り値が左辺値になることに注意が必要。

※ 第2文字列を空文字にする処理
※ 戻り値は, $2になるので、$2がFalseだと表示されない
# echo "a b c" | awk '$2 = ""'

# echo "a b c" | awk '!($2 = "")'
a c

■ 組み込み変数

  • NF : フィルード(列)の数
  • NR : レコード(行)の数
  • FS : フィールドの区切り文字 (デフォルトは空白)
  • RS : レコードの区切り文字 (デフォルトは改行)
  • OFS : 出力するときのフィールドの区切り文字 (デフォルトは空白)
  • ORS : 出力するときのレコードの区切り文字 (デフォルトは改行)

■ 組み込み関数

  • substr(対象文字列, 切り出し開始文字位置, 切り出す文字数)

  • sub(置換対象文字列, 置換後文字列, 対象文字列)
    => 最初に検索にヒットした文字だけ

  • gsub(置換対象文字列, 置換後文字列, 対象文字列)
    => 検索にヒットした文字全て

  • index(文字列, 検索文字) => 検索文字位置

  • match(文字列, 正規表現) => 真偽値
    => RSTART : マッチした文字位置
    => RLENGTH : マッチした文字数

  • split() : 文字列から配列を作る、配列数を返す

  • patsplit() : パターンを指定して配列を作成

  • length(配列) => 配列の数

  • printf

echo "1 2 3"  | awk '{var = $2; printf("test %s test", var);}'
  • sprintf : 文字列を結合する
echo "1 2 3"  | awk '{var = $2; string=sprintf("test %s test", var); print string}'

  • fork : 並列処理
@load "fork";

BEGIN {
    for (i = 1; i <= 3; i++) {
         pid = fork();

        # pid が 0 なら子プロセス
        if (pid == 0) {
            for (j = 1; j < 3; j++) {
                print i j
            }
        }

    }
}

■ 正規表現

パターンを/で囲む。

ps aux  | awk '/.+sh/ { print $0 }'

■ スイッチ

※ NR = 1でTrueに、NR = 5でFalseni
NR == 1, NR == 5

■ 計算

2進数で表現できない数値は計算する際に誤差がでる場合もある

70.21 * 100 = 7021にならないケースがある


■ 乱数

awk '{ srand('"$RANDOM"'); print rand() }'

■ 繰り返し文

awk 'BEGIN {for (i = 1; i <= 5; i++) print i;}'

■ 参考サイト

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?