在“&gt;和<! - pattern - >中提取字符串

时间:2009-04-17 15:02:45

标签: regex vim

我正在尝试从一行中具有以下模式的文件中提取字符串

>------ </

-----表示可以是任何可变长度的字符串。一行中的起始模式为>,结束模式为</

使用VIM的正则表达式可以进行命令行搜索吗?如果是这样可以打印出来?

或者必须写一个脚本?

我是VIM的新用户

2 个答案:

答案 0 :(得分:6)

尝试以下vim搜索:

/">\(.*\)<\/

这应该与该模式的任何行匹配。它还会将您在开始和结束标记之间抓取的任何文本存储到\1,如果您想在vim中进行搜索和替换,可以使用它。例如:

:%s/">\(.*\)<\//Log message: \1/

如果要在命令行中使用grep来搜索该字符串,可以使用:

$ egrep "\">.*<\/" foo.txt

这将只打印foo.txt的匹配行。如果您想将这些文件发送到新文件,请尝试:

$ egrep "\">.*<\/" foo.txt > new.txt

答案 1 :(得分:1)

试试这个

%:s/.*>\(.*\)<\/.*/\1/