파일을 입력으로 지정하지 않고 awk를 사용하여 일부 숫자 또는 문자열 작업을 수행할 수 있습니까?

파일을 입력으로 지정하지 않고 awk를 사용하여 일부 숫자 또는 문자열 작업을 수행할 수 있습니까?

awk에는 숫자와 문자열에 대한 연산을 위한 내장 함수가 있습니다. 이것이 바로 프로그래밍 언어가 하는 일입니다.

파일을 입력으로 지정하지 않고 awk를 사용하여 일부 숫자 또는 문자열 작업을 수행할 수 있는지 궁금합니다. 파일이나 stdin 입력 없이 awk가 작동할 수 있나요?

예를 들어, 나는 awk가 1+2awk 프로그램에서 "입력" 1과 2를 평가하고 하드코딩하도록 하려고 합니다. 글쎄요, 제가 직접 대답하겠습니다.

$ awk "BEGIN{print 1+2}"
3

그러나 놀랍게도 awk는 입력 파일을 지정하지 않았기 때문에 stdin의 입력을 기다리지 않습니다. 왜 안 돼?

감사해요.

답변1

이것은 의도적으로 설계된 것입니다. (적어도) GNU 매뉴얼 페이지에 문서화되어 있습니다:awk

프로그램 전체가 BEGIN블록으로 구성되어 있으면 실행이 종료되고, 그렇지 않으면 입력 스트림이 열리고 실행이 계속됩니다.

~에서POSIX:

awk프로그램에 패턴이 있는 작업만 포함되어 있고 BEGIN작업 에 함수가 BEGIN포함되어 있지 않은 경우 마지막 작업의 마지막 문이 실행될 때 입력을 읽지 않고 종료되어야 합니다.getlineawkBEGIN

관련 정보