MATCH $0 BEG_ERE
각 행에 대해 반복하여 다음을 수행하고 있습니다 . 주로 시작이 {
다음 줄에서 시작되기 때문입니다. 이것이 실수일까요?
match($0, beg_ere, maggr)
{
print "MATCH $0 BEG_ERE"
print " " $0
next
}
답변1
아니요, 이것은 버그가 아닙니다. 이것은 기능입니다.
awk 프로그램은 일련의 쌍으로 구성되며, rule { action }
논리적으로 TRUE이면 { action }
프로그램이 실행됩니다. rule
그러나 두 가지 특별한 경우가 있습니다.
rule
비어 있으면{ action }
모든 레코드에 대해 실행됩니다. 즉, 빈 규칙은 기본적으로 TRUE로 간주됩니다.비어 있으면
{ action }
동등한 기본 작업이 가정됩니다.{ print $0 }
그래서 귀하의 프로그램은문법은 맞는데도,이어야 한다두 개의 별도 규칙-작업 쌍과 동일
match($0, beg_ere, maggr) { print $0 }
1 {
print "MATCH $0 BEG_ERE"
print " " $0
next
}
당신은 또한 볼 수 있습니다awk에서 stdout으로 인쇄하는 것을 방지하는 방법스크립트(Cli가 아님)