{ で始まる次の行の規則

{ で始まる次の行の規則

MATCH $0 BEG_ERE各行について繰り返し、次のことを行っています。主に開始が{次の行から始まるからです。これが間違いでしょうか?

match($0, beg_ere, maggr)
 {
  print "MATCH $0 BEG_ERE"
  print "   " $0
  next
 }

ベストアンサー1

いいえ、これはバグではありません。これは機能です。

awk プログラムは一連のペアで構成され、rule { action }論理的に TRUE の場合は{ action }プログラムが実行されます。ruleしかし、2つの特別なケースがあります。

  1. rule空の場合、{ action }すべてのレコードに対して実行されます。つまり、空のルールはデフォルトでTRUEと見なされます。

  2. 空の場合、{ action }同等の基本操作が想定されます。{ print $0 }

だからあなたのプログラムは文法は正しいですがでなければならない2つの別々のルール - 作業ペアと同じ

match($0, beg_ere, maggr) { print $0 }

1 {
  print "MATCH $0 BEG_ERE"
  print "   " $0
  next
 }

また、見ることができますawkからstdoutへの印刷を防ぐ方法スクリプト(クリではない)

おすすめ記事