我正在尝试从一行中具有以下模式的文件中提取字符串
>------ </
-----表示可以是任何可变长度的字符串。一行中的起始模式为>
,结束模式为</
。
使用VIM的正则表达式可以进行命令行搜索吗?如果是这样可以打印出来?
或者必须写一个脚本?
我是VIM的新用户
答案 0 :(得分:6)
尝试以下vim搜索:
/">\(.*\)<\/
这应该与该模式的任何行匹配。它还会将您在开始和结束标记之间抓取的任何文本存储到\1
,如果您想在vim中进行搜索和替换,可以使用它。例如:
:%s/">\(.*\)<\//Log message: \1/
如果要在命令行中使用grep来搜索该字符串,可以使用:
$ egrep "\">.*<\/" foo.txt
这将只打印foo.txt
的匹配行。如果您想将这些文件发送到新文件,请尝试:
$ egrep "\">.*<\/" foo.txt > new.txt
答案 1 :(得分:1)
试试这个
%:s/.*>\(.*\)<\/.*/\1/