我有一个超过500000行的文本文件。我正在使用VIM编辑这些文件。
我的文字在每一行都有方括号。不幸的是,有些线路没有关闭方括号。
some text [ text
some text [ text]
some text [ text]
some text [ text
some text [ text]
我需要我的文字
some text [text]
some text [text]
some text [text]
some text [text]
some text [text]
我想知道如何使用Vim完成上述结果。
答案 0 :(得分:3)
:%s/[^\]]$/&]
替换EOL之前的每个最后一个字符,它不是]
,后面跟着]
,实际上是在没有的情况下添加一个尾随括号。
现在,在您的初始代码段中,左括号与后面的单词之间用空格隔开,因此您可能需要运行第二次替换来清理整个内容:
:%s/\[\s*/[
答案 1 :(得分:2)
有很多方法:
<c-v>
然后选择所有线条,然后按$A]<esc>
:%s/$/]/
:%normal A]
qqA]jq
然后通过500000@q
就个人而言,我会选择替换。
答案 2 :(得分:0)
@ PeterRincker的解决方案似乎很棒,可以在所选行的末尾添加]
。
以下建议在一个命令中将]
添加到不以]
结尾的所有非空行文件(或使用]
,后跟空格):
:%s/[^\]]\+ *$/&]/