如何在Windows上执行“sed - ”操作?

时间:2013-01-01 06:41:22

标签: windows unix sed

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

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

如果有一个点,则每行上的尾随点之前的空格。

我没有任何cygwin或unix,我使用的是Windows操作系统。在这个55GB上我能做到的普通吗?文件?

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

3 个答案:

答案 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'\""

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

其他搜索词来帮助那些寻找:插值、插值