【问题标题】:Replace string value using SED command使用 SED 命令替换字符串值
【发布时间】:2021-05-16 01:34:43
【问题描述】:

我的命令是

sh abc.sh 'hello'
  

在我的 shell 脚本中 abc.sh

var1=$1
sed -i "s/'/ /g" $var1 

sed 不工作

【问题讨论】:

  • 你想在sed做什么?
  • $var1 被解释为输入文件名,而不是要处理的字符串。
  • 如果您只想删除单引号,那么简单的 echo $1 有什么问题?

标签: linux shell sed


【解决方案1】:

参数中的 sed 等待文件名(参见 man sed

sed [OPTION] .... {script-only-if-no-other-script} [input-file]

在您的脚本中,您需要更改为:

echo "$var1" | sed "s/'/ /g"

【讨论】:

【解决方案2】:

您正在对变量而不是文件执行 sed,因此将变量重定向回 sed 以获得所需的结果:

sed "s/'//g" <<< "$var1"

这避免了与 echo "$var1" | 相关的低效率sed .....

在这个用例中,sed 的替代方法是 tr 等:

tr -d "'" <<< "$var1"

使用 -d "'" 传递要从文本中删除的字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-11-12
    • 2014-07-29
    • 2015-03-24
    • 2021-10-28
    • 2016-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多