匹配前删除3行,匹配后删除1行,不包括匹配的sed行

时间:2016-08-11 17:15:22

标签: sed

我想使用sed -i删除if周围的setenv sd_ROOT,像往常一样打印其他行。我知道,用awk的方式

if {[string match blr* [uname nodename]]} {
 puts stderr "version sd_root_2013_11_04 does not exist"
} else {
  setenv sd_ROOT /tools/sd/sd_root_2013_11_04
}

预期产出:

setenv sd_ROOT /tools/sd/sd_root_2013_11_04

1 个答案:

答案 0 :(得分:0)

可以使用sed完成,但非常难看:

sed -n '1{N;N;x;n}; /setenv/{N;s/.*//;h;n}; {H;x;s/^\n//;P;s/^[^\n]*\n//;x}; ${x;p}'