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