새로운 행의 패턴을 grep로 지정하는 방법은 무엇입니까?
새로운 행의 패턴을 grep로 지정하는 방법은 무엇입니까?첫 줄에 새 줄, 끝에 새 줄.정규 표현 방식이 아닙니다.예를 들어 \n.
해라pcregrep
보통이 아니라grep
:
pcregrep -M "pattern1.*\n.*pattern2" filename
그-M
옵션을 사용하면 여러 줄에 걸쳐 일치할 수 있으므로 새 줄을 검색할 수 있습니다.\n
.
grep
패턴은 개개의 회선과 대조되기 때문에 패턴은 입력에서 발견된 새로운 회선과 일치할 수 없습니다.
그러나 다음과 같은 빈 행을 찾을 수 있습니다.
grep '^$' file
grep '^[[:space:]]*$' file # include white spaces
@jarno 덕분에 -z 옵션에 대해 알고 있습니다.또, GNU grep 를 -P 옵션과 함께 사용하면, 와의 매칭이 가능하게 됩니다.:)
예:
grep -zoP 'foo\n\K.*'<<<$'foo\nbar'
결과:
bar
줄바꿈을 포함한 모든 것을 대조하는 예:
.*
줄 바꿈과 일치하지 않습니다.줄바꿈을 포함한 모든 항목을 일치시키려면1 (.|\n)*
:
grep -zoP 'foo\n\K(.|\n)*'<<<$'foo\nbar\nqux'
결과:
bar
qux
1 이쪽 : https://stackoverflow.com/a/33418344
이렇게 하면...
grep -P '^\s$' file
-P
Perl 정규 표현(POSIX 확장)에 사용됩니다.grep
).\s
공백 문자와 일치합니다(뒤에 이어지는 경우).*
빈 행과도 일치합니다.^
는 행의 선두와 일치합니다.$
이 행의 말미와 일치합니다.
회피책의 경우(노트북을 사용하지 않음)-P
)는, 새로운 행의 문자를 다른 행으로 일시적으로 치환하고, 다음과 같이 변경할 수 있습니다.
grep -o "_foo_" <(paste -sd_ file) | tr -d '_'
기본적으로 정확히 일치하는 것을 찾고 있습니다._foo_
어디에_
수단\n
(따라서)__
=\n\n
)에 의해 번역할 필요가 없습니다.tr '_' '\n'
각 패턴이 새로운 행에 인쇄되기 때문에, 삭제해 주세요._
충분합니다.
막 찾았다
grep $'\r'
사용하고 있다$'\r'
배쉬에서 C스타일의 탈출을 위해서요
이 기사에서
언급URL : https://stackoverflow.com/questions/12652568/how-to-give-a-pattern-for-new-line-in-grep
'sourcecode' 카테고리의 다른 글
간접 확장이란 무엇입니까?${!var*}의 의미는 무엇입니까? (0) | 2023.04.14 |
---|---|
Linux, DST-safe에서 bash로 어제 날짜 가져오기 (0) | 2023.04.14 |
XAML에서 이미지 리소스를 참조하는 방법 (0) | 2023.04.14 |
Objective-C에서 문자열이 비어 있는지 테스트하려면 어떻게 해야 합니까? (0) | 2023.04.14 |
C#은 JavaScript 인코딩과 동등합니까?URIComponent()? (0) | 2023.04.14 |