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模式来查找带换行符的字符串?
答案 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:\