![파일을 입력으로 지정하지 않고 awk를 사용하여 일부 숫자 또는 문자열 작업을 수행할 수 있습니까?](https://linux55.com/image/142055/%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%9E%85%EB%A0%A5%EC%9C%BC%EB%A1%9C%20%EC%A7%80%EC%A0%95%ED%95%98%EC%A7%80%20%EC%95%8A%EA%B3%A0%20awk%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%9D%BC%EB%B6%80%20%EC%88%AB%EC%9E%90%20%EB%98%90%EB%8A%94%20%EB%AC%B8%EC%9E%90%EC%97%B4%20%EC%9E%91%EC%97%85%EC%9D%84%20%EC%88%98%ED%96%89%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
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