grep
위치 16에서 시작하는 경우 패턴을 일치시켜야 합니다 . 문자열 ' pattern'
(공백으로 시작) 을 일치시키고 싶다고 가정해 보겠습니다 .
다음이 일치해야 합니다.
bla bla bla bla pattern
그리고 검색 패턴이 pos에서 시작되지 않기 때문에 다음은 일치하지 않아야 합니다. 16:
bla bla bla bla foo foo pattern
이 정규식을 사용해 보았습니다.
egrep '.*\{15\} pattern'
그러나 이것은 예상대로 작동하지 않는 것 같습니다.
누구든지 해결책을 제안할 수 있나요?
답변1
내 생각에 당신이 찾고 있는 것은 다음과 같습니다.
grep -E '^.{15} pattern'
이는 대부분의 사용 사례에 적합합니다. 하지만 해당 부분만 "일치"하는 것이 아니라 pattern
그 이전의 모든 항목도 일치에 포함됩니다. 직접 제공되거나 쉘 별칭에 포함된 grep
경우 강조 표시하여 이를 확인할 수 있습니다 . --color
색상이 없으면 grep -o
인쇄할 일치하는 부분에만 영향을 미칩니다. 예를 들어:
$ echo 'bla bla bla bla pattern' | grep -Eo '^.{15}( pattern)'
bla bla bla bla pattern
GNU grep에서 이 동작을 방지하려면 Lookbehind와 함께 Perl 표현식을 사용할 수 있습니다. 예를 들어:
$ echo 'bla bla bla bla pattern' | grep -Po '(?<=^.{15}) pattern'
pattern
이는 해당 pattern
부분에만 "일치"됩니다.