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