有没有办法强迫grep理解Windows的行尾?

有没有办法强迫grep理解Windows的行尾?,grep,line-endings,git-for-windows,Grep,Line Endings,Git For Windows,我最近从GitForWindows安装了PortableGit,因为我发现Github for Windows不再打包Git Shell(我已经非常喜欢它了)。我希望能够在一行末尾对我的源文件中的文本进行grep:例如,grep-R-n——包括“*.py”-P”:$”。如前所述,由于Windows的行结尾,这不起作用-我必须使用“:\r$”(或者更华丽的东西,以便更健壮)来代替。这是令人恼火的;我发现很难记住,我不需要在gVim中有这样的解决方法。我也不记得需要在Git Shell中内置grep

我最近从GitForWindows安装了PortableGit,因为我发现Github for Windows不再打包Git Shell(我已经非常喜欢它了)。我希望能够在一行末尾对我的源文件中的文本进行grep:例如,
grep-R-n——包括“*.py”-P”:$”
。如前所述,由于Windows的行结尾,这不起作用-我必须使用
“:\r$”
(或者更华丽的东西,以便更健壮)来代替。这是令人恼火的;我发现很难记住,我不需要在gVim中有这样的解决方法。我也不记得需要在Git Shell中内置grep实用程序来实现它;但PortableGit的工具似乎严格按照书上的规定执行


我有没有办法强迫
grep
\r\n
视为一条线的尽头,或者在这里没有任何其他改进?我不想把我所有的源代码都转换成Unix文件的结尾;但如果这就是我所需要的,那么我也需要帮助让gVim尊重这个约定(包括新文件)。(不过,这仍然不理想;我可能还想对程序输出进行grep处理,因为我用Python以文本模式编写文件,所以它们自然有Windows换行符。)

除了默认的换行符序列外,不能设置其他换行符序列

但是,你可以用它来做。要强制CRLF行结束,请使用如下
-N
选项:

pcregrep -N CRLF 'regex' file
或者,如果要将其设置为CR(在旧MacOS上):


运行
dos2unix
将文件转换为UNIX行结尾,然后对新文件执行grep操作。

您可以使用
-N
选项强制行结尾。像
pcregrep-ncrlf'regex'文件一样
我认为git for windows(!)和通常的msys/msys2工具比cygwin更能容忍行尾。您可以尝试使用fstab设置(有一个二进制装载标志)。
pcregrep
似乎没有随PortableGit提供。最可靠的信息来源在哪里?@KarlKnechtel是的,如果你使用,这是不可能的。你能详细说明你的答案吗?
pcregrep -N CR 'regex' file