我正在尝试获取文件中两个标签之间的文本。但是,如果脚本找到开始标记但未找到结束标记,则它将从开始标记打印文件到文件末尾。
例如文本是:
aaa
TAG1
some right text
TAG2
some text2
TAG1
some text3
some text4
和这样的脚本:
awk "/TAG1/,/TAG2/"
or
sed -n "/TAG1/,/TAG2/p"
比输出将是:
some right text
some text3
some text4
但我需要这个:
some right text
切勿使用范围表达式,因为它们会使琐碎的任务稍微简短一些,但当事情变得稍微更有趣时,需要完全重写以避免重复的条件,就像您的情况一样。始终使用标志来代替:
$ awk 'f{ if (/TAG2/){printf "%s", buf; f=0; buf=""} else buf = buf $0 ORS}; /TAG1/{f=1}' file
some right text
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)