
awk에는 숫자와 문자열에 대한 연산을 위한 내장 함수가 있습니다. 이것이 바로 프로그래밍 언어가 하는 일입니다.
파일을 입력으로 지정하지 않고 awk를 사용하여 일부 숫자 또는 문자열 작업을 수행할 수 있는지 궁금합니다. 파일이나 stdin 입력 없이 awk가 작동할 수 있나요?
예를 들어, 나는 awk가 1+2
awk 프로그램에서 "입력" 1과 2를 평가하고 하드코딩하도록 하려고 합니다. 글쎄요, 제가 직접 대답하겠습니다.
$ awk "BEGIN{print 1+2}"
3
그러나 놀랍게도 awk는 입력 파일을 지정하지 않았기 때문에 stdin의 입력을 기다리지 않습니다. 왜 안 돼?
감사해요.
답변1
이것은 의도적으로 설계된 것입니다. (적어도) GNU 매뉴얼 페이지에 문서화되어 있습니다:awk
프로그램 전체가
BEGIN
블록으로 구성되어 있으면 실행이 종료되고, 그렇지 않으면 입력 스트림이 열리고 실행이 계속됩니다.
~에서POSIX:
awk
프로그램에 패턴이 있는 작업만 포함되어 있고BEGIN
작업 에 함수가BEGIN
포함되어 있지 않은 경우 마지막 작업의 마지막 문이 실행될 때 입력을 읽지 않고 종료되어야 합니다.getline
awk
BEGIN