【问题标题】:How to set sed command correctly如何正确设置 sed 命令
【发布时间】:2021-01-19 07:08:58
【问题描述】:

当我尝试以下命令时,我想重写 sql。

Day='2020/12/1'
Dir=/home/test/data


sql=`cat $Dir"/"$test".sql" | sed -e "s/Day/$Day/g"`

我遇到了以下错误。

sed: -e expression #1, char 24: unknown option to `s'

为什么 s 被识别为 option ?为什么这个命令不能正常工作?

如果有人有意见,请告诉我

谢谢

【问题讨论】:

标签: linux shell sed zsh


【解决方案1】:

问题在于斜杠:您的变量包含它们,最终命令将类似于 sed "s/string/path/to/something/g",其中包含太多斜杠。

由于 sed 可以将任何字符作为分隔符(无需声明新的分隔符),您可以尝试使用另一个未出现在替换字符串中的字符,如下所示:

sql=`cat $Dir"/"$test".sql" | sed -e "s|Day|$Day|g"`

此外,您还需要使用 sed -i 就地更新文件,因为这看起来就是您想要做的。

【讨论】:

  • 这里不用cat。只需在 sed 命令末尾添加文件路径即可,
猜你喜欢
  • 2017-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-25
  • 2020-12-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多