ksh에서 awk를 올바르게 사용하는 방법은 무엇입니까?

ksh에서 awk를 올바르게 사용하는 방법은 무엇입니까?

나는 가지고있다:

  1 #!/bin/ksh
  2 BEGIN { print "START" }
  3       { print "Hello World" }
  4 END   { print "STOP"   }
  5 
  6 
  7 exit 0

그런 다음 파일을 실행하려고 하면 다음 오류가 발생합니다.

./file[2]: BEGIN: not found
./file[3]: syntax error: `{' unmatched

명령이 awk키워드 앞에 와야 합니까 BEGIN?

답변1

귀하의 질문을 설명할 때 귀하는 awk간단한 스크립트를 실행하려고 시도한 다음 ksh이를 중심으로 스크립트를 정교하게 작성하게 될 것입니다. 이렇게 하려면 다음과 같이 스크립트를 수정해야 합니다.

  1 #!/bin/ksh
  2 awk 'BEGIN { print "START" } \
  3       { print "Hello World" } \
  4 END   { print "STOP"  }'
  5 
  6 
  7 exit 0

스크립트는 $PATH에서 실행될 awk때 큰 문자열을 사용 합니다. awk큰 문자열은 ksh문자열 보간을 방지하기 위해 작은따옴표로 묶여 있으며, 3개의 작은 문자열이 아닌 하나의 큰 문자열로 만들기 위해 2, 3, 4행의 마지막 문자로 백슬래시를 사용합니다.

"START" 를 인쇄한 후 스크립트 ksh가 정지된 것처럼 보입니다 . "Return" 또는 "Enter"를 몇 번 누르기만 하면 됩니다. "입력"할 때마다 "Hello World"가 표시됩니다. 컨트롤-D를 실행하여 파일 끝을 나타냅니다 awk. 프로세스 awk는 "STOP"을 인쇄하고 종료됩니다.

ksh다른 작업을 수행하려면 입력 파일을 제공하고 awk파일이나 파이프로 보내는 등 더 많은 내용을 작성해야 합니다 .

관련 정보