gpt4 book ai didi

linux - 为什么 sed 在脚本中不能正常工作

转载 作者:太空宇宙 更新时间:2023-11-04 09:37:14 26 4
gpt4 key购买 nike

您好,我在 shellscript 中有以下行

sed 's_$org_$repl_g' $i > $temp_file

在此$org 表示要更改的名称,$repl 表示替换。我已经为两者都做了 echo ,并且都写了。 $i 代表文件名。当我在下方回显时

echo $(sed "s/$org/$repl_g" $i)

那么它也不会取代这个词。而当我直接用终端尝试这个时,如下所示

sed 's_Dilip_Agarwal_g' test.txt

然后它通过替换原来的输出来给出正确的输出。

任何人都可以帮助我解决我在这方面的错误。

谢谢

最佳答案

不要对其使用命令替换。并使用双引号而不是单引号。单引号不展开参数。您还必须修复参数扩展。 _ 也是一个有效的参数字符,因此您需要使用大括号来隔离唯一可以标识参数的字符。

sed "s_${org}_${repl}_g" "$i" > "$temp_file"

您也可以只使用另一个不是参数字符的定界符:

sed "s|$org|$repl|g" "$i" > "$temp_file"

关于linux - 为什么 sed 在脚本中不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25279194/

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