我正在编写一个批处理文件,该文件使用GNU grep for Windows来分析程序的输出。
我正在努力的命令旨在找到跨越多行的多个匹配项。当我在批处理文件中运行这个单一命令时,我得到了预期的输出。
someprogram.exe | grep -PZo "(?s)Start.*?End"
Start
...
End
Start
...
End
Start
...
End
但是,当我尝试将其传输到其他东西时(或者如果我在命令提示符下运行命令),只有其中一个匹配正在通过:
someprogram.exe | grep -PZo "(?s)Start.*?End" | more
Start
...
End
但是,如果每个匹配只跨越一行,那么我就不会遇到这个问题。
Start...End
Start...End
Start...End
我怀疑这可能与grep处理换行符的方式有关,但没有文档有用。有人可以解释一下发生了什么,并给我一个解决方法吗?