在一段时间前创建脚本时,我查看了stackoverflow和其他脚本,发现printf的这种用法确实(或者我认为)满足了我的需要:
printf '%s\n' '$+?multi_pack?a' "$content" .x | ex $log_output
正如我的脚本中显示的那样。我知道它的结果是什么,以及大致如何使用printf。此行正在添加字符串
$content
(这是命令扩展
content="$(cat $temp_file_2)"
其中temp_file_2包含我需要附加的文本)在使用ex文本编辑器的模式“multi_pack”最后一次出现之后。它必须是最后一次出现,因为在生成日志文件(通过循环)时会发生追加,并且模式可能会发生多次,但我只对上次出现模式感兴趣,因此在每次新出现时都会追加相关的文本(哪些更改)。模式的CE(反过来,它与上一次循环匹配的模式不同)。
我正在尝试解决的问题是如何修改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
而产出并不是我所期望的……
编辑
巴玛的回答是我需要的。我想问的问题是‘我做得对吗?’为了帮助我找出导致输出不起作用的原因(正如我在切普纳编辑之前所解释的那样,这一行代码可能根本就不起作用——如果它确实是正确的话)。printf是一个红鲱鱼的种类,ex是做模式匹配。