3

我最近从 GitForWindows 安装了 PortableGit,因为我发现 Github for Windows 不再打包 Git Shell(我非常喜欢它)。我希望能够在行尾 grep 我的源文件中的文本:例如grep -R -n --include "*.py" -P ":$" .. 正如所写的那样,由于 Windows 行结尾,这不起作用 - 我必须使用":\r$"(或者也许更花哨的东西,更健壮)来代替。这很烦人;我觉得很难记住,我不需要在 gVim 中使用这种解决方法。我也不记得需要使用 Git Shell 中内置的 grep 实用程序来执行此操作;但是 PortableGit 的工具似乎在书本上相当严格。

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

4

2 回答 2

1

除了默认的换行顺序之外,您不能使用grep.

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

pcregrep -N CRLF 'regex' file

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

pcregrep -N CR 'regex' file
于 2019-09-24T09:05:25.220 回答
0

运行dos2unix以将文件转换为 UNIX 行结尾,然后对新文件进行 grep。

于 2020-07-14T09:33:28.473 回答