我有一个带有大量参考文献[1],[2],...,[70]等的文本文档。如何使用vi自动删除它们?也就是说,删除与模式匹配的所有内容:[*]。
答案 0 :(得分:3)
尝试运行此命令:
:%s/\[[0-9]\+\]//g
它会在括号\[[0-9]\+\]
中找到所有数字模式,并在所有行:s
上用空字符串替换g
所有出现%
。
要运行它,请从正常模式开始,然后键入上面的命令,包括冒号。
答案 1 :(得分:1)
只是为了开发@ user156213非常好的答案:
:
% —→ make the regex match the whole file range (from line 1 to last line)
s —→ use the substitute regex command
/ —→ separator for the regex to match against
\[ —→ look for a [ character on a line
[0-9] —→ look for any digit
\+ —→ look for 1 or more occurence of thee the previous pattern
\] —→ look for a ] character
/ —→ separator between the match regex and the replacement string
/ —→ end of the replacement string (i.e.: nothing)
g —→ apply the match multiple times each line
这里显示的是与自动机相同的正则表达式:
答案 2 :(得分:0)
%s/\[[^]]*\]//g
或非贪婪:
%s/\[.\{-}\]//g
两者都能做你想做的事:delete everything that matches the pattern: [*].