如何在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' ,因为每个模式都会被打印在新行中,所以删除_就足够了。