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つの特別なケースがあります。
rule
空の場合、{ action }
すべてのレコードに対して実行されます。つまり、空のルールはデフォルトでTRUEと見なされます。空の場合、
{ action }
同等の基本操作が想定されます。{ print $0 }
だからあなたのプログラムは文法は正しいですが、でなければならない2つの別々のルール - 作業ペアと同じ
match($0, beg_ere, maggr) { print $0 }
1 {
print "MATCH $0 BEG_ERE"
print " " $0
next
}
また、見ることができますawkからstdoutへの印刷を防ぐ方法スクリプト(クリではない)