如何给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适用于文件中的每一行。你能举个例子吗?