You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用sed在前置行含then的目标行后添加指定代码?

解决方案

可以用sed的N命令将下一行读入模式空间,结合匹配判断实现需求,以下是简洁可行的命令:

sed '/then/{
    N
    /\n#  \$UXEXE\/uxset msg/{
        s/\n/\n  echo ""\n/
    }
}' input_file

命令逻辑说明

  1. 定位目标前置行:/then/{...} 匹配所有包含"then"的行,进入后续处理逻辑。
  2. 合并上下行:N 将当前行的下一行追加到模式空间,此时模式空间内容为含then的行\n目标注释行。
  3. 验证匹配条件:/\n# \$UXEXE\/uxset msg/ 检查合并后的内容是否符合「前一行含then、当前行是目标注释行」的要求。
  4. 插入指定代码:s/\n/\n echo ""\n/ 将模式空间中的换行符替换为「换行+带缩进的echo行+换行」,完成目标代码的插入。

测试结果

将你的输入内容保存为test.sh,执行上述命令后,输出与期望完全一致:

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

内容的提问来源于stack exchange,提问作者Mister Claret

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 05:43:11