4

我有一个 55 GB 的大文件,其中每一行都有一个句子。我想检查是否有任何带有点“。”的行。最后,如果有,我想在该行的点之前插入一个空格。

例:我喜欢那辆车。替换为:我喜欢那辆车。

如果有点,则每行尾随点前的空格。

我没有任何 cygwin 或 unix,我使用的是 Windows 操作系统。我可以在这 55GB 上做一个常见的 sed 吗?文件?

我尝试了 GetGNUWin32,但无法确定那里的实际命令。

4

3 回答 3

3

安装 Perl。Strawberry Perl 可能是最好的 Windows 发行版。 http://strawberryperl.com/

要在 Perl 中执行您所说的操作,应该是这样的:

perl -p -i -e's/\.$/ ./' filename
于 2013-01-01T06:47:40.303 回答
3

您可以从那里安装 Cygwin和使用。sed在这里我找到了适用于 Windows 的 Sed


编辑
很好地回答您的问题: cmd.exe 是否有类似 sed 的实用程序

(当我在谷歌上搜索时,我总是加前缀stackoverfloew。我在谷歌上为你做了同样的事情:sed on window stackoverflow,但那是另一回事)

于 2013-01-01T06:52:54.127 回答
2

对于您的用例:

来自 PowerShell.exe(Windows 自带)

(Get-Content file.txt) -Replace '\.$', ' .' | Set-Content file.txt

我搜索了几个小时,在试图找到我的用例的解决方案时遇到了很多麻烦,所以我希望添加这个答案可以帮助处于同样情况的其他人。

对于那些像我一样弄清楚 git filter clean/smudge 的人来说,这是我最终管理它的方法:

在文件中:(.gitconfig 全局)

[filter "replacePassword"]
    required = true
    clean = "PowerShell -Command \"(Get-Content " %f ") -Replace 'this is a password', 'this is NOT a password'\""
    smudge = "PowerShell -Command \"(Get-Content " %f ") -Replace 'this is NOT a password', 'this is a password'\""

请注意,此代码段不会更改原始文件(这适用于我的用例)。

帮助查找的其他搜索词:插值、插值

于 2021-03-29T03:00:47.670 回答