grep을 사용하여 검색 콘텐츠 전후에 표시해야 하는 문자 수를 결정하고 싶습니다. 예를 들어 "This is an example" 행에서 "Example"을 필터링하고 싶습니다. 결과를 사용하면 grep example
해당 문자열을 포함하는 모든 줄이 되며 내가 얻고 싶은 것은 "한 가지 예", 단어 앞의 두 문자예.
답변1
grep 옵션이 있습니다
grep -Eo '...example' test.txt
어디
-E
확장 정규식 사용-o
일치하는 문자열만 출력...
3개의 문자를 나타냅니다.- 두 가지 옵션을 다음과 같이 결합할 수 있습니다.
-Eo
- 쉘 대체를 피하기 위한 ' ' 서라운드 패턴
권장사항에 따라 3자 이하로 대체하세요.
grep -Eo '.{,3}example' test.txt
이는 x{a,b}
a와 b 사이에 x가 나타남을 의미합니다.
.{,3}
최대 3개의 임의 문자X{2,10}
2~10개의 연속된 X(대문자 X)[xy]{5}
x 또는 y의 정확히 5개
쉘 교체에 대한 참고 사항
grep -Eo ???example file
123example
grep이 실행되는 디렉터리에 유사한 파일이 존재하는 경우 예상대로 작동하지 않을 수 있습니다.
답변2
grep에서 sed로 출력을 파이프할 수 있습니다. 예는 다음과 같습니다.
grep example test.txt | sed 's/.*\(...example\)/\1/'
sed 튜토리얼은 다음을 참조하세요.http://www.grymoire.com/Unix/Sed.html