堪能なawkシリーズ(6):awkのawkコマンドの構造と文法構造


戻ります:


awkコマンド構造と構文構造

awkコマンド構造

awk [ -- ] program-text file ...        (1)
awk -f program-file [ -- ] file ...     (2)
awk -e program-text [ -- ] file ...     (3)

どこで:

文法構造のawk

awkはawkの構文構造は、コード部の構造です。

awkの構文はいっぱいあるpattern{action}パターン、彼らはawkのルールと呼ばれます。

例えば:

awk '
  BEGIN{n=3} 
  /^[0-9]/{$1>5{$1=333;print $1}
  /Alice/{print "Alice"}
  END{print "hello"}
' a.txt

# 等价的单行式:
awk 'BEGIN{n=3} /^[0-9]/{$1>5{$1=333;print $1} /Alice/{print "Alice"} END{print "hello"}' a.txt

上記の例では、ブロックは、BEGIN文あり、2つの主要なコードブロックがあるENDステートメントブロック、コードブロックパターンなどの2つの主な用途の正規表現です。

awkの構文について:

  • 複数のpattern{action}組み合わせで直接接続
  • 同じ行に複数のステートメントでのアクションは、セミコロン区切りを使用する必要がある場合
  • ラインパターンのための部分をスクリーニングする、アクションは、スクリーニングによって後に行われる動作を表します。
  • そして、行動パターンを省略することができます
    • 省略pattern実行される各アクションの行データに相当し、
      • 例えば:awk '{print $0}' a.txt
    • コードブロックは省略され{action}、同等{print}、すなわちすべての出力ライン
      • たとえば、次のようにawk '/Alice/' a.txt相当しますawk '/Alice/{print $0}' a.txt
    • 省略コードブロックactionのスクリーニングラインを表明は、何もしません
      • 例えば:awk '/Alice/{}' a.txt
    • pattern{action}任意の部分を省略することができます。
      • 例えば:awk '' a.txt

パターンとアクション

ためのpattern{action}パターン部が使用されていてもよい文章構造(文のブロックが参照されている)、次のモードに記載されています。

# 特殊pattern
BEGIN
END

# 布尔代码块
/regular expression/    # 正则匹配成功与否 /a.*ef/{action}
relational expression   # 即等值比较、大小比较 3>2{action}
pattern && pattern      # 逻辑与 3>2 && 3>1 {action}
pattern || pattern      # 逻辑或 3>2 || 3<1 {action}
! pattern               # 逻辑取反 !/a.*ef/{action}
(pattern)               # 改变优先级
pattern ? pattern : pattern  # 三目运算符决定的布尔值

# 范围pattern,非布尔代码块
pattern1, pattern2      # 范围,pat1打开、pat2关闭,即flip,flop模式

アクション部分は、印刷など、任意のステートメントにすることができます。

おすすめ

転載: www.cnblogs.com/f-ck-need-u/p/11918254.html