You need to enable JavaScript to run this app. 如何用单条sed命令提取两模式间字符串并插入到指定模式前
优惠活动
大模型
产品
解决方案
定价
更多

如何用单条sed命令提取两模式间字符串并插入到指定模式前

sed 单命令实现字符串提取并插入指定位置方案

不需要嵌套sed命令,直接使用sed自带的分组捕获功能即可一条命令完成需求,写法更简洁高效。

方法1:使用扩展正则(推荐,语法更易读)

适配支持-E参数的GNU sed环境,命令如下:

sed -E 's/at ([0-9]+) usecs(.*)2021/at \1 usecs\2\1 2021/g' logs_test

方法2:使用基础正则

如果当前环境不支持-E参数,可使用转义括号的基础正则写法:

sed 's/at \([0-9]\+\) usecs\(.*\)2021/at \1 usecs\2\1 2021/g' logs_test

命令逻辑说明

  • 正则中第一个括号([0-9]+)匹配at和usecs中间的数字串,捕获后存入内置变量\1
  • 第二个括号(.*)匹配usecs之后到2021之前的所有内容,捕获后存入内置变量\2
  • 替换时按结构原样输出原有内容,额外在2021前插入捕获到的\1即可

关于嵌套sed的补充:逻辑上可以通过GNU sed的e修饰符实现嵌套调用,但完全没有必要,嵌套会大幅增加命令复杂度、降低执行效率,优先使用原生的分组捕获功能即可。

内容的提问来源于stack exchange,提问作者Nalluri Venkatesh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 21:06:06