긴 줄이 많이 포함된 파일이 있습니다. 두 패턴 사이의 모든 그룹을 가져와 한 줄에 하나씩 새 파일로 인쇄하고 싶습니다. Python을 사용하여 이 작업을 수행할 수 있지만 명령줄 도구만 사용하여 수행하는 것을 선호합니다. 종료 모드가 없으면 줄 끝까지 다 잡고 싶습니다.
그것은 다음과 같습니다:
input:
xxSTART relevanttext xxEND something else xxSTART even more relevant
output:
relevanttext
even more relevant
답변1
GNU grep이 옵션인 경우 -P
(perl 호환 정규식) 플래그를 전달하고 정방향 어설션, 역방향 어설션 및 비탐욕적 일치를 사용하여 필요한 것을 추출할 수 있습니다.
echo 'xxSTART relevanttext xxEND something else xxSTART even more relevant' |\
grep -oP '(?<=START).*?(?=xxEND|$)'
relevanttext
even more relevant
또는 Stephane Chazelas가 제안한 것처럼 장난스러운\케이뒤돌아보기 주장 대신
echo 'xxSTART relevanttext xxEND something else xxSTART even more relevant' |\
grep -oP 'START\K.*?(?=xxEND|$)'