如何在grep中为新行添加模式?
如何在grep中为新行添加模式? 开始新行,结束新行。 不是正则expression式的方式。 像\ n。
grep
模式匹配个别行,所以模式无法匹配input中find的换行符。
但是你可以find像这样的空行:
grep '^$' file grep '^[[:space:]]*$' file # include white spaces
尝试pcregrep
而不是常规的grep
:
pcregrep -M "pattern1.*\n.*pattern2" filename
-M
选项允许它跨越多行进行匹配,因此您可以search换行符为\n
。
你可以用这种方法…
grep -P '^\s$' file
-
-P
用于Perl正则expression式(对POSIXgrep
的扩展)。 - 匹配空白字符; 如果后面跟
*
,它也匹配一个空行。 -
^
匹配行的开头。$
匹配行的结尾。
至于解决方法(不使用不可移植的-P
),您可以暂时用不同的字符replace新行并将其更改回来,例如:
grep -o "_foo_" <(paste -sd_ file) | tr -d '_'
在哪里寻找完全匹配_foo_
其中_
表示\n
(so __
= \n\n
)。 你不需要把它翻译回tr '_' '\n'
,因为每个模式都会被打印在新行中,所以删除_
就足够了。