AWK-출력 리디렉션
지금까지 표준 출력 스트림에 데이터를 표시했습니다. 데이터를 파일로 리디렉션 할 수도 있습니다. 리디렉션은print 또는 printf성명서. AWK의 리디렉션은 AWK 프로그램 내부에 작성된다는 점을 제외하면 쉘 명령의 리디렉션과 동일하게 작성됩니다. 이 장에서는 적절한 예와 함께 리디렉션에 대해 설명합니다.
리디렉션 연산자
리디렉션 연산자의 구문은 다음과 같습니다.
통사론
print DATA > output-file
데이터를 output-file. 출력 파일이 존재하지 않으면 생성합니다. 이러한 유형의 리디렉션이 사용되면 첫 번째 출력이 기록되기 전에 출력 파일이 지워집니다. 동일한 출력 파일에 대한 후속 쓰기 작업은 출력 파일을 지우지 않고 추가합니다. 예를 들어 다음 예제는Hello, World !!! 파일에.
텍스트 데이터가있는 파일을 만들어 보겠습니다.
예
[jerry]$ echo "Old data" > /tmp/message.txt
[jerry]$ cat /tmp/message.txt
이 코드를 실행하면 다음 결과가 나타납니다.
산출
Old data
이제 AWK의 리디렉션 연산자를 사용하여 일부 콘텐츠를 리디렉션 해 보겠습니다.
예
[jerry]$ awk 'BEGIN { print "Hello, World !!!" > "/tmp/message.txt" }'
[jerry]$ cat /tmp/message.txt
이 코드를 실행하면 다음 결과가 나타납니다.
산출
Hello, World !!!
연산자 추가
추가 연산자의 구문은 다음과 같습니다-
통사론
print DATA >> output-file
데이터를 output-file. 출력 파일이 존재하지 않으면 생성합니다. 이러한 유형의 리디렉션을 사용하면 새 내용이 파일 끝에 추가됩니다. 예를 들어, 다음 예제는Hello, World !!! 파일에.
텍스트 데이터가있는 파일을 만들어 보겠습니다.
예
[jerry]$ echo "Old data" > /tmp/message.txt
[jerry]$ cat /tmp/message.txt
이 코드를 실행하면 다음 결과가 나타납니다.
산출
Old data
이제 AWK의 추가 연산자를 사용하여 일부 내용을 추가하겠습니다.
예
[jerry]$ awk 'BEGIN { print "Hello, World !!!" >> "/tmp/message.txt" }'
[jerry]$ cat /tmp/message.txt
이 코드를 실행하면 다음 결과가 나타납니다.
산출
Old data
Hello, World !!!
파이프
파일을 사용하는 대신 파이프를 통해 다른 프로그램으로 출력을 보낼 수 있습니다. 이 리디렉션은 명령에 대한 파이프를 열고이 파이프를 통해 항목 값을 다른 프로세스에 기록하여 명령을 실행합니다. 리디렉션 인수 명령은 실제로 AWK 표현식입니다. 다음은 파이프의 구문입니다.
통사론
print items | command
사용하자 tr 소문자를 대문자로 변환하는 명령.
예
[jerry]$ awk 'BEGIN { print "hello, world !!!" | "tr [a-z] [A-Z]" }'
이 코드를 실행하면 다음 결과가 나타납니다.
산출
HELLO, WORLD !!!
양방향 통신
AWK는 다음을 사용하여 외부 프로세스와 통신 할 수 있습니다. |&, 양방향 통신입니다. 예를 들어 다음 예제에서는tr소문자를 대문자로 변환하는 명령. 우리의command.awk 파일에-
예
BEGIN {
cmd = "tr [a-z] [A-Z]"
print "hello, world !!!" |& cmd
close(cmd, "to")
cmd |& getline out
print out;
close(cmd);
}
이 코드를 실행하면 다음 결과가 나타납니다.
산출
HELLO, WORLD !!!
스크립트가 은밀하게 보입니까? 우리가 그것을 이해하자.
첫 번째 진술, cmd = "tr [a-z] [A-Z]", AWK에서 양방향 통신을 설정하는 명령입니다.
다음 명령문, 즉 인쇄 명령은 tr명령. 여기&| 양방향 통신을 나타냅니다.
세 번째 진술, 즉, close(cmd, "to"), 닫습니다 to 실행 경쟁 후 프로세스.
다음 진술 cmd |& getline out 저장합니다 output getline 함수의 도움으로 out 변수로.
다음 print 문은 출력을 인쇄하고 마지막으로 close 함수는 명령을 닫습니다.