这个的语法是:
sed -n '/Regex1/,/Regex2/p'
但这包括找到Regex1和Regex2的行,我该如何排除它们?
例如:
abcd-Regex1
BlaBlaBla
abcd-Regex2
然后我只想:BlaBlaBla
答案 0 :(得分:0)
您可以使用awk
中的简单状态机执行此操作:
pax> echo 'abcd-Regex1
BlaBlaBla
abcd-Regex2' | awk '/Regex2/{e=0}{if(e){print}}/Regex1/{e=1}'
BlaBlaBla
它基本上使用了一个echo标志e
,下面的命令按行顺序执行:
/Regex2/{e=0}
在找到终止线路时关闭回声。{if(e){print}}
打印行。/Regex1/{e=1}
在初始化线路时启用回音。如果您必须仅使用sed
,则 可以通过将其传递到另一个sed
以删除开始来实现和结束行:
pax> echo 'asdf
abcd-Regex1
BlaBlaBla
abcd-Regex2' | sed -n '/Regex1/,/Regex2/p' | sed -e '/Regex1/d' -e '/Regex2/d'
BlaBlaBla