如何给grep中的换行模式?新行开始,新行结束。不是正则表达式的方式。类似于\ n。
Answers:
grep
模式是针对各个行进行匹配的,因此,模式无法与输入中找到的换行符匹配。
但是,您可以找到像这样的空行:
grep '^$' file
grep '^[[:space:]]*$' file # include white spaces
您可以使用这种方式...
grep -P '^\s$' file
-P
用于Perl正则表达式(POSIX的扩展grep
)。\s
匹配空白字符;如果后跟*
,则还匹配一个空行。^
匹配行首。$
匹配行尾。 -P
是GNU扩展。我可以在情况需要时使用它(通常是向前/向后),但是POSIX grep可以使用来完成此操作[[:space:]]
。
-P
。无论如何,GNU是非常标准的。:)
brew install grep
获得GNU grep,它在几种方面都比较出色。 apple.stackexchange.com/questions/193288/…–
至于解决方法(不使用non-portable -P
),您可以将换行符临时替换为另一个换行符,然后将其改回,例如:
grep -o "_foo_" <(paste -sd_ file) | tr -d '_'
基本上,它在寻找精确匹配_foo_
,其中_
手段\n
(所以__
= \n\n
)。您无需将其翻译回tr '_' '\n'
,因为无论哪种模式都将以新行打印,因此删除_
就足够了。
<(p paste -sd_ file )
?
new line at the beginning
是空白行,new line at end
适用于文件中的每一行。你能举个例子吗?