有什么方法可以强制 grep 理解 Windows 行结尾吗?

Kar*_*tel 5 grep line-endings git-for-windows

在发现 Windows 版 Github 不再打包 Git Shell(我已经越来越喜欢)后,我最近从 GitForWindows 安装了 PortableGit。我希望能够在我的源文件中查找行尾的文本:例如grep -R -n --include "*.py" -P ":$" .。正如所写的,由于 Windows 行结尾,这不起作用 - 我必须使用":\r$"(或者也许更奇特的东西,以便更强大)来代替。这很令人恼火;我发现很难记住,而且我不需要 gVim 中的这种解决方法。我也不记得需要使用 Git Shell 中内置的 grep 实用程序来完成此操作;但 PortableGit 的工具似乎相当严格地按照规定行事。

有什么方法可以强制grep将其视为\r\n行尾,或者如果没有其他改进?我不想将所有源代码转换为 Unix 文件结尾;但如果这就是所需要的,那么我还需要帮助让 gVim 尊重该约定(包括新文件)。(不过,这仍然不理想;我可能还想 grep 程序输出,并且由于我在 Python 中以文本模式编写文件,因此它们自然具有 Windows 行结尾。)

Wik*_*żew 4

您无法使用 来设置默认换行顺序以外的换行顺序grep

但是,您可以使用 来实现pcregrep。要强制 CRLF 行结尾,请使用-N如下选项:

pcregrep -N CRLF 'regex' file
Run Code Online (Sandbox Code Playgroud)

或者,如果您想将其设置为 CR(如在旧 MacOS 上):

pcregrep -N CR 'regex' file
Run Code Online (Sandbox Code Playgroud)