여러 개의 파일이 있는데 st
두 태그와 et
.
을 사용하면 grep "st.*et" files
결과에 두 태그가 모두 포함됩니다.
예를 들어 st Hello world! et
. 그런데 이 부분
만 필요해요 .Hello world!
태그 사이의 내용만 표시하기 위해 grep(또는 다른 정규식 도구)을 사용하는 방법이 있습니까?
추신: 나는 내 목표를 달성하기 위해 이러한 결과를 추가로 처리하기 위해 AWK
등과 같은 도구를 사용하는 방법을 알고 있습니다 . python
하지만 이 작업을 수행하는 더 직접적인 방법이 있는지 궁금합니다.
답변1
grep
최신 PCRE 지원과 함께 GNU 사용:
echo 'st Hello world! et' | grep -oP "st\K.*?(?=et)"
여기서 핵심은 길이가 0인 Lookahead 및 LookBehind 어설션을 사용하는 것입니다.
\K ==> Look-behind assertion
(?=et) ==> Look-ahead assertion
자세한 내용은 다음을 참조하세요.여기.
답변2
다음을 사용할 수 있습니다 sed
.
sed -n 's/.*st\(.*\)et.*/\1/p'