AWK

Last update 1995/9/6
Since: 1995/9/6
History -- here -- Quick Reference


参考文献

  1. コマンドの形式
  2. % awk 'パターン {アクション}' 対象ファイル名
    % awk -f プログラムを記述したファイル名 対象ファイル名

  3. 記述例
  4. % awk '/ccws/ {print}' /etc/hosts
    文字列 ccws を含む行をプリント
    % awk '/ccws/ {print $1,$2}' /etc/hosts
    フィールド1と2
    % awk '/ccws/ {print $2 "TAB" $1}' /etc/hosts
    間にタブを入れて出力
    % awk '{print $1,$2}' /etc/hosts
    全レコードに対して実行
    % awk 'NR==1,NR==10 {print $2}' /etc/hosts
    1行めから10行めまで
    % awk '/ccws/ {print $1,$2} /ccx/ {print $2}' /etc/hosts
    % awk '/^#/' /etc/hosts
    先頭が # の行
    % awk -F: '{print $1 "TAB" $5}' /etc/passwd
    フィールド区切りが :
    % awk -F: '/S.* Y.*/ {print $1,$5}' /etc/passwd
    正規表現の例
    % awk -F: '/KEK|HIS/ {print $1 "TAB" $5}' /etc/passwd
    正規表現の例
    % awk -F: '$5 ~ /S.* Y.*/ {print $1,$5}' /etc/passwd
    検索するフィールド
    % awk -F: '$5 \!~ /S.* Y.*/ {print $1,$5}' /etc/passwd
    不一致
    % date |awk ' {print "Today is " $2,$3,$6 }'

  5. パターンの記述

      • 正規表現
        関係演算子
        論理演算子
        処理の範囲(正規表現と演算子の組み合わせ)
        BEGIN と END

    1. パターンに記述できる関係式
        S1==S2 :
        S1!=S2 :
        S1 > S2 :
        S1 < S2 :
        S1>=S2 :
        S1=<S2 :
        equ1 && equ2
        equ1 || equ2
      例) % awk -F: '$3>=100 && $3<10000 {print $1,"uid="$3,"gid="$4}' /etc/passwd

    2. 処理の範囲の指示
      NR==m,NR==n	m 行目から n 行目まで
      /^a/,/^b/	先頭が a で始まる行から, 最初に検出される b で始まる行まで
      

  6. アクションの記述
    1. 複数のアクション
        % awk '/ccws/ {print $1 ;print $2}' /etc/hosts
      ファイルへの記述では2行に分割してもよい
        /ccws/ {print $1
        print $2}

    2. 組み込み関数
        length(変数名)
        sqrt(変数名)
        log(変数名)
        exp(変数名)
        int(変数名)
        substr("S",m,n)
        printf("f",e1,e2,...)

    3. print
        タブ
        ... print "\t"
        改行
        ... print "\n"

    4. 変数
        $1, $2フィールド変数
        NRレコード番号
        NFカレントレコードのフィールド数
        FSフィールドセパレータ
        RSレコードのセパレータ
        a=1数値
        a="moji"文字列
        a=moji数値

    5. 演算子
      	+,  -,          *,  /,  %
      	++, --, +=, -=, *=, /=, %=
      
    6. 配列

    7. 制御文
        if (条件式) {アクション} else{アクション}
        while (条件式) {アクション}
        for (式;条件式;式) {アクション}
        break
        continue

History

2000/ 6/29      Converted to HTML format.