【问题标题】:why sed not working properly in script为什么 sed 在脚本中不能正常工作
【发布时间】:2014-10-06 09:38:17
【问题描述】:

嗨,我在 shellscript 中有以下行

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

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

回声 $(sed "s/$org/$repl_g" $i)

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

sed 's_Dilip_Agarwal_g' test.txt

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

任何人都可以帮助我解决我的错误。

谢谢

【问题讨论】:

标签: linux bash shell


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    • 2019-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    • 2014-10-24
    相关资源
    最近更新 更多