SunOS - (Bash)Grep命令获取不包含模式的匹配行

时间:2013-11-21 06:51:24

标签: regex linux bash grep

我在标题中提到了一个问题。

我的文件中有一些行:

<Hi>
<Test>
<Test2>
</Test2>
</Test>
</Hi>

所以我需要获得“Hi”标签的全部内容。但我没有gnu grep并且无法安装它我不是机器上的root。我只能用:

Usage: grep -hblcnsviw pattern file . . .

所以不能使用-A和-B命令或其他gnu grep命令,能不能给我一个出路..

提前致谢..

3 个答案:

答案 0 :(得分:1)

您的系统是否有awk,如果是,请尝试:

awk '/<Hi>/,/<\/Hi>/' file
<Hi>
<Test>
<Test2>
</Test2>
</Test>
</Hi>

或者您可以使用:

awk '/<Hi>/{f=1} /<\/Hi>/ {f=0;print} f' file

答案 1 :(得分:1)

古老的sed怎么样?

sed -n '/<Hi>/,/<\/Hi>/p' file

答案 2 :(得分:1)

使用sed:

sed -n '/<Hi>/,/<\/Hi>/p' file

Perl one-liner ..

perl -ne 'print if /<Hi>/ .. /<\/Hi>/' file