grep에서 새 줄에 패턴을 제공하는 방법은 무엇입니까? 처음에는 새 줄, 끝에는 새 줄. 정규식 방식이 아닙니다. \ n 같은 것.
답변
grep 패턴은 개별 줄과 일치하므로 패턴이 입력에서 찾은 줄 바꿈과 일치 할 방법이 없습니다.
그러나 다음과 같은 빈 줄을 찾을 수 있습니다.
grep '^$' file
grep '^[[:space:]]*$' file # include white spaces
답변
pcregrep일반 대신 시도하십시오 grep.
pcregrep -M "pattern1.*\n.*pattern2" filename
이 -M옵션을 사용하면 여러 줄에 걸쳐 일치시킬 수 있으므로 개행 문자를 \n.
답변
이런 식으로 사용할 수 있습니다 …
grep -P '^\s$' file
-PPerl 정규 표현식에 사용됩니다 (POSIX 확장grep).\s공백 문자와 일치합니다. 뒤에이면*빈 줄도 일치합니다.^줄의 시작과 일치합니다.$줄의 끝과 일치합니다.
답변
@jarno 덕분에 나는 -z 옵션에 대해 알고 있으며 -P 옵션과 함께 GNU grep을 사용할 때 일치하는 \n것이 가능하다는 것을 알았습니다 . 🙂
예:
grep -zoP 'foo\n\K.*'<<<$'foo\nbar'
인쇄물 bar
답변
해결 방법 (non-portable을 사용하지 않음)에 관해서는 -P개행 문자를 임시로 다른 문자로 바꾸고 다시 변경할 수 있습니다. 예 :
grep -o "_foo_" <(paste -sd_ file) | tr -d '_'
기본적으로 그것은 정확히 일치 찾고 _foo_곳 _수단을 \n(너무 __= \n\n). tr '_' '\n'어쨌든 각 패턴이 새 줄에 인쇄 되므로으로 다시 번역 할 필요가 없으므로 제거 _하면 충분합니다.
