如果当前行之前的行与使用 sed 的某些模式匹配,则在当前行之后插入一行;

问题描述 投票:0回答:1

我正在寻找一个 sed 命令来在匹配模式的行之后添加指令(如果它之前的行也包含一些字符串)。很难说,所以这是输入:

if [ $coderet -ne 0 ];then
#  $UXEXE/uxset msg "*** KO *** voir log systeme ***"
exit 1
fi

if [ $coderet -ne 0 ];
  then
#  $UXEXE/uxset msg "*** KO *** voir log systeme ***"
exit 1
fi

我想在与

echo ""
匹配的行之后添加
#  $UXEXE/uxset msg
,如果它之前的行包含字符串
then
,那么预期结果将如下所示:

if [ $coderet -ne 0 ];then
#  $UXEXE/uxset msg "*** KO *** voir log systeme ***"
  echo ""
  exit 1
fi

if [ $coderet -ne 0 ];
  then
#  $UXEXE/uxset msg "*** KO *** voir log systeme ***"
  echo ""
  exit 1
fi

预先感谢您的帮助!

我尝试了很多方法但没有什么结果!对不起!

linux sed
1个回答
0
投票

awk 中的解决方案很简单:

awk '{
    print
    if (prev_had_then && index($0, "#  $UXEXE/uxset msg"))
        print "  echo \"\""
    prev_had_then = /then/
}' file

sed 并不复杂:

sed '
    /then/ {
        N
        /#  \$UXEXE\/uxset msg/ a\  echo ""
    }
' file
© www.soinside.com 2019 - 2024. All rights reserved.