我在使用gvim和grep的Unix上。
我需要在xml文件中搜索以下模式:
< sample1>
< /sample1>
所以问题是图案越过一条线。我是gvim和grep的新手,并且可以使用我的正则表达式/特殊字符知识来解决这个问题。
另一个问题是,在第二行中的小于号(&lt;)之前存在空格。即
< sample1>
< /sample1>
有人可以建议我如何搜索这些模式吗?
答案 0 :(得分:3)
要在Vim中搜索此模式,请在正常模式下使用/
命令:
/< sample>\n< \/sample1>
请注意,必须使用/
字符转义第二行的\
字符。
答案 1 :(得分:2)
使用sed
的一种方式:
sed -n '/< sample1>/,/< \/sample1>/p' file.txt
修改强>
如果您想排除分隔符:
sed -n '/< sample1>/,/< \/sample1>/ {//!p}' file.txt
答案 2 :(得分:0)
您只需键入命令模式即可搜索< /sample1>
模式:
/< \/sample1>
我不明白第二个问题,因为如果有空白区域并不重要。在搜索斜杠后面放一个空格:
/ < \/sample1>
我刚刚在Vim中对此进行了测试,但它确实有效。希望对你有用。
干杯。
答案 3 :(得分:0)
您可以在搜索模式中的ViM中使用\n
。
/<\ sample1>\n<\ \/sample1>
/<\ sample1>\n\ <\ \/sample1>
如果你想更精确并忽略这样的情况:
blah blah < sample1>
< /sample1> blah blah
您可以明确要求匹配行的开头和结尾:
/^<\ sample1>\n\ <\ \/sample1>$
如果代码前的空白区域不重要,您可以使用\s*
/^\s*<\ sample1>\n\s*<\ \/sample1>$
如果你对使用grep感兴趣,我有个坏消息。 grep不会做多行。但是,您可以查看this question并了解pcregrep -M
可以解决您的问题。