awk를 사용하여 표준 출력에 인쇄하는 명령을 어떻게 실행합니까? 예를 들어 awk를 사용하여 다음을 인쇄합니다.
grep -B100 some file1.tcl
grep -B100 some file2.tcl
그런 다음 .sh 파일에 저장한 다음 해당 파일을 가져옵니다. 명령이 실행될 수 있도록 이것을 어딘가로 파이프할 수 있습니까?
awk '{print xx}' | pipeline
답변1
그냥 쉘에 파이프하세요:
$ printf 'echo foo\necho bar\n' | bash
foo
bar
답변2
간단한 명령보다 더 발전된 명령의 경우(물론 간단한 명령도 있습니다):
eval "$( awk ... )"
그러면 현재 셸의 컨텍스트에서 코드가 실행되므로 코드는 셸에서 변수를 설정하거나 수정할 수도 있습니다.
grep
그러나 분명히 다음을 사용하여 다른 파일을 구문 분석하고 싶기 때문에저것같은 awk
프로그램을 사용하시나요? ...또는 awk
패턴과 파일 이름을 읽는 다른 프로그램을 사용하시겠습니까?
답변3
이미 위험에 처해 있으므로 파이프할 필요도 없습니다. 명령을 실행하면 항상 서브셸 확장 구성에서 실행될 안전한 명령만 출력됩니다.
$ $( awk 'BEGIN { print "echo hello" }' )
hello