큰 텍스트 파일이 있는데 그 파일의 일부 줄만 보고 싶습니다. 첫 번째 행이 regex와 일치하기를 원하고 R
해당 행이 regex와 일치하면 S
해당 행이나 후속 행에 대해서는 신경 쓰지 않습니다. 가운데 줄은 일치하지 않습니다 R
. 나중에 출력을 어딘가에 파이프할 수 있도록 bash 명령을 사용하여 명령줄에서 이 작업을 수행할 수 있는 방법이 있습니까?
답변1
그리고 sed
:
sed -n '/R/,$!d; /S/q; p'
예:
$ seq 20 | sed -n '/6/,$!d; /1/q; p'
6
7
8
9
답변2
펄 사용:
# perl -ne 'print if ( /R/ .. /S/ ); last if /S/'
S-Matching 정규식을 인쇄하지만 '
답변3
awk를 사용하세요
awk 'x&&/S/{exit};x+=/R/' file
예
seq 20 | awk 'x&&/1/{exit};x+=/6/'
6
7
8
9
답변4
이 문제를 해결하기 위해 프로그램을 작성했습니다.에서부터
다음과 같이 사용할 수 있습니다.
cat file | fromto -f R -T S
R
가져오려는 정규식은 어디에 있습니까?~에서, S
캡처하려는 정규식입니다.도착하다. 그 사이의 모든 줄을 인쇄합니다. -f
"'from' 줄을 포함함"을 의미하고, -F
"'from' 줄을 포함하지 않음"을 의미합니다. 와 같다 -t
/ -T
. 문제는 "to" 줄을 제외하고 따라서 -T
해당 요구 사항에 대한 인수를 제외하는 것입니다. 이것을 사용하면 -t
"to" 줄이 인쇄됩니다(그러나 다음 줄은 인쇄되지 않음).