{로 시작하는 다음 줄에 대한 규칙

{로 시작하는 다음 줄에 대한 규칙

MATCH $0 BEG_ERE각 행에 대해 반복하여 다음을 수행하고 있습니다 . 주로 시작이 {다음 줄에서 시작되기 때문입니다. 이것이 실수일까요?

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

답변1

아니요, 이것은 버그가 아닙니다. 이것은 기능입니다.

awk 프로그램은 일련의 쌍으로 구성되며, rule { action }논리적으로 TRUE이면 { action }프로그램이 실행됩니다. rule그러나 두 가지 특별한 경우가 있습니다.

  1. rule비어 있으면 { action }모든 레코드에 대해 실행됩니다. 즉, 빈 규칙은 기본적으로 TRUE로 간주됩니다.

  2. 비어 있으면 { action }동등한 기본 작업이 가정됩니다.{ print $0 }

그래서 귀하의 프로그램은문법은 맞는데도,이어야 한다두 개의 별도 규칙-작업 쌍과 동일

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

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

당신은 또한 볼 수 있습니다awk에서 stdout으로 인쇄하는 것을 방지하는 방법스크립트(Cli가 아님)

관련 정보