如何在Windows版本gnu grep中忽略换行符?

时间:2011-02-01 14:22:39

标签: windows regex grep

windows xp, gnu grep来自http://gnuwin32.sourceforge.net/packages/grep.htm

我有包含换行符的文件:

test 
  123

我尝试使用gnu grep通过regexp模式"test.*\n*.*12"

查找此文件
grep -G "test.*\n*\.*12" C:\myfile_with_linebreaks.txt

但没有成功。

我需要使用哪些参数或regexp模式来查找带换行符的字符串?

1 个答案:

答案 0 :(得分:0)

我经常使用[^\0](除了NUL之外的每个字符),因为大多数字符串都不包含NUL字符。否则,我会组建一个包含. \n的字符组:

grep -G "test[.\n]*12" C:\

相反,如果你想在test和123之间只有一个换行符,我会使用非贪婪的*运算符:

grep -G "test.*?\n.*?12" C:\

?运算符后面的*问号会限制该运算符。如果没有?,它将一直持续到找到最后一个匹配为止;使用?时,它会在第一场匹配后停止。

此外,您可能明确需要使用-E开关启用POSIX扩展正则表达式:

grep -E "test.*?\n.*?12" C:\