![표준 입력에서 데이터 블록 복사 [닫기]](https://linux55.com/image/3434/%ED%91%9C%EC%A4%80%20%EC%9E%85%EB%A0%A5%EC%97%90%EC%84%9C%20%EB%8D%B0%EC%9D%B4%ED%84%B0%20%EB%B8%94%EB%A1%9D%20%EB%B3%B5%EC%82%AC%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
표준 입력에서 입력을 받는 스크립트를 실행 중입니다. 이 입력은 매우 커질 수 있으므로 관심 있는 부분을 임시 파일로 추출하고 싶습니다.
첫 번째 줄에는 "[cics]"가 포함되어 있으며 해당 지점부터 다음 "["까지의 모든 내용을 임시 파일에 쓰고 싶습니다.
나는 이 작업을 수행하는 방법을 확신하기 전에는 스크립트에서 stdin을 실제로 사용한 적이 없었습니다.
답변1
다음을 사용해 보세요:
awk 'BEGIN { RS="[" } { if (index($0, "cics]") == 1) print; }'
입력을 필터링하세요. 문자는 포함되지 않습니다 [
.
awk
임시 파일을 사용하는 것보다 출력을 직접 사용하는 것이 좋습니다 .
답변2
다음을 사용하면 쉽게 이 작업을 수행할 수 있습니다 sed
.
sed -n '/\[cics\]/,/\[/p' <<-END
one
two [cics]
three
four
[five]
six
[seven]
[cics] eight
[nine]
ten
END
two [cics]
three
four
[five]
[cics] eight
[nine]