我有一个 55 GB 的大文件,其中每一行都有一个句子。我想检查是否有任何带有点“。”的行。最后,如果有,我想在该行的点之前插入一个空格。
例:我喜欢那辆车。替换为:我喜欢那辆车。
如果有点,则每行尾随点前的空格。
我没有任何 cygwin 或 unix,我使用的是 Windows 操作系统。我可以在这 55GB 上做一个常见的 sed 吗?文件?
我尝试了 GetGNUWin32,但无法确定那里的实际命令。
安装 Perl。Strawberry Perl 可能是最好的 Windows 发行版。 http://strawberryperl.com/
要在 Perl 中执行您所说的操作,应该是这样的:
perl -p -i -e's/\.$/ ./' filename
您可以从那里安装 Cygwin
和使用。sed
在这里我找到了适用于 Windows 的 Sed
编辑:
很好地回答您的问题:
cmd.exe 是否有类似 sed 的实用程序
(当我在谷歌上搜索时,我总是加前缀stackoverfloew
。我在谷歌上为你做了同样的事情:sed on window stackoverflow
,但那是另一回事)
对于您的用例:
来自 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'\""
请注意,此代码段不会更改原始文件(这适用于我的用例)。
帮助查找的其他搜索词:插值、插值