如何在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式(对POSIX grep的扩展)。
  • 匹配空白字符; 如果后面跟* ,它也匹配一个空行。
  • ^匹配行的开头。 $匹配行的结尾。

至于解决方法(不使用不可移植的-P ),您可以暂时用不同的字符replace新行并将其更改回来,例如:

 grep -o "_foo_" <(paste -sd_ file) | tr -d '_' 

在哪里寻找完全匹配_foo_其中_表示\n (so __ = \n\n )。 你不需要把它翻译回tr '_' '\n' ,因为每个模式都会被打印在新行中,所以删除_就足够了。