2

我在 Unix 上使用 gvim 和 grep。

问题1:

我需要在 xml 文件中搜索以下模式:

< sample1>
< /sample1>

所以问题是图案越过一条线。我是 gvim 和 grep 的新手,无法使用我的正则表达式/特殊字符知识来解决这个问题。

问题2:

另一个问题是,第二行的小于号 (<) 之前有空格。IE

< sample1>
 < /sample1>

谁能建议我如何搜索这些模式?

4

4 回答 4

3

要在 Vim 中搜索此模式,请/在正常模式下使用命令:

/< sample>\n< \/sample1>

请注意,/必须使用该字符对第二行上的字符进行转义\

于 2012-08-08T15:04:41.670 回答
2

一种使用方式sed

sed -n '/< sample1>/,/< \/sample1>/p' file.txt

编辑:

如果您希望排除分隔符:

sed -n '/< sample1>/,/< \/sample1>/ {//!p}' file.txt
于 2012-08-08T15:00:20.293 回答
0

维姆

你可以\n在 ViM 里面使用搜索模式。

问题1:

/<\ sample1>\n<\ \/sample1>

问题2:

/<\ sample1>\n\ <\ \/sample1>

如果您想更精确并忽略这样的情况:

blah blah < sample1>
 < /sample1> blah blah

您可以明确要求匹配行的开头和结尾:

问题2:

/^<\ sample1>\n\ <\ \/sample1>$

如果标签前的空白数量不重要,您可以使用\s*

/^\s*<\ sample1>\n\s*<\ \/sample1>$

grep

如果你对使用 grep 感兴趣,我有个坏消息要告诉你。grep 不做多行。但是,您可以查看这个问题并了解pcregrep -M可以解决您的问题。

于 2012-08-08T15:13:56.877 回答
0

您只需在命令模式下键入即可搜索< /sample1>模式:

/< \/sample1>

我不明白第二个问题,因为是否有空白无关紧要。只需在搜索斜杠后放置一个空格:

/ < \/sample1>

我刚刚在 Vim 中测试过它并且它有效。希望对你有用。

干杯。

于 2012-08-08T15:10:03.160 回答