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

如何修改printf命令,使用变量作为Ex模式匹配参数实现文本追加?

问题排查与解决记录

我当初编写脚本的时候,通过Stack Overflow这类渠道找到了一段printf的用法,当时以为完全符合我的需求:

printf '%s\n' '$+?multi_pack?a' "$content" .x | ex $log_output

这段代码在我的脚本里就是这样呈现的,我清楚它的作用,也大致了解printf的用法——它借助ex文本编辑器,在日志文件$log_output中multi_pack模式最后一次出现的位置后追加字符串$content($content是通过命令替换content="$(cat $temp_file_2)"获取的,temp_file_2里存放着需要追加的文本)。

因为日志文件是通过循环生成的,这个模式可能会多次出现,我只需要定位到最后一次出现的位置,这样每次循环就能给新出现的模式追加对应的文本。

后来我想修改这个printf命令,把匹配模式换成变量,以此按需改变文本追加的位置。我尝试了两种写法:
第一种:

printf '%s\n' "$+?${my_new_variable}?a" "$content" . x | ex $log_output

第二种:

printf '%s\n' "$+?$my_new_variable?a" "$content" . x | ex $log_output

但输出结果都不符合预期。

补充说明

后来Barmar的回答解决了我的问题。我原本只是想确认自己的写法是否正确,以此排查输出异常的原因(之前也提过,问题可能根本不在这行代码上)。实际上printf只是个干扰项,真正执行模式匹配的是Ex编辑器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 06:45:45