gpt4 book ai didi

shell - 在 Shell 脚本中使用带有 sed 的变量

转载 作者:行者123 更新时间:2023-12-01 10:15:58 25 4
gpt4 key购买 nike

我正在编写一个 shell 脚本来编辑 更改设置 aegis 的属性。这 我正在使用的命令是:

aegis -Change_Attributes -Edit

其中打开一个vi编辑器进行携带 出变化。我想搜索 并替换:

s/brief_description \= \"none\"\;/brief_description \=

\"test\"/g

我可以将这些直接传递给 open 没有通过脚本的 vi 实例 输入任何内容?我要保存 编辑后的文档 (:wq)。

附言该文件是一个临时文件 执行命令时创建so 不知道原路径

编辑:我可以在这种情况下使用 sed:

sed -e 's/brief_description\ \=\ \"none\"\;/brief_description\ \=\

\"test\"\;/g'

解决方案(不优雅的 hack??)会 成为“猫”宙斯盾的输出 (setenv VISUAL cat),修改out 用上面的命令放流 将它保存到一个临时文件,然后使用:

aegis -change_attributes -file <temp file>

EDIT2: 我几乎已经开始工作了。但是我使用 sed

的方式有问题

我的脚本中有以下行:

sed -i 's/brief_description\ \=\ \"none\"\;/brief_description\ \=\ \"${DESC}\"\;/g' temp_next.txt

但是 $DESC 变量没有计算出它的值,输出给出如下:

brief_description = "${DESC}";

我如何将 DESC 传递给 sed 以使其计算为实际值?

编辑 3:

使用

sed -i 's%brief_description\ \=\ \"none\"\;%brief_description\ \=\ \"'"$DESC"'\"\;%g' temp_next.txt

成功了。我将普通分隔符 (/) 替换为 %,并将环境变量放在双引号中。

最佳答案

您不需要知道路径 - aegis 应用程序会提供。您需要更改指定编辑器 aegis 用于指向脚本的环境变量,并在该脚本中使用 sed流编辑器来执行您的编辑。

编辑:关于您的变量名扩展问题,将包含整个 sed 替换表达式的单引号组更改为双引号。单引号关闭变量替换。

关于shell - 在 Shell 脚本中使用带有 sed 的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/772017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com