【问题标题】:sed: -e expression #1, char 43: unknown option to `s' [duplicate]sed:-e 表达式 #1,字符 43:“s”的未知选项 [重复]
【发布时间】:2020-11-25 16:36:11
【问题描述】:

我正在尝试使用 bash 替换文件中的变量值。

Input string ----- preprocess_date=06/24/2020_17:00

Expected string ----- preprocess_date=06/24/2020_17:10

我在prep_tmp 变量中有值06/24/2020_17:10。我已经尝试了以下命令:

sed -i s/preprocess_date=.*/preprocess_date=${prep_tmp}/

我收到了错误sed: -e expression #1, char 43: unknown option to `s'

谁能帮我解决这个问题?

提前致谢。

【问题讨论】:

  • 在你的 sed 表达式周围使用“-s”和一个差异分隔符:sed -i "s#preprocess_date=.*#preprocess_date=${prep_tmp}#"
  • 请注意这里搜索[sed] unknown option to时已经有270个Q/As。

标签: sed


【解决方案1】:

您的命令带有 3 个分隔符 /:

sed -i s/preprocess_date=.*/preprocess_date=${prep_tmp}/
        ^                  ^                           ^

扩展到:

sed -i s/preprocess_date=.*/preprocess_date=06/24/2020_17:10/
        ^                  ^                  ^

24/2020_17:10/s 命令后溢出

要解决此问题,您可以将所有分隔的/ 替换为其他字符。我喜欢使用|(但也需要" 以确保它们不会被shell 解析为管道)

sed -i "s|preprocess_date=.*|preprocess_date=${prep_tmp}|"

【讨论】:

    猜你喜欢
    • 2014-04-06
    • 2018-04-25
    • 2022-12-28
    • 2013-03-08
    • 2021-02-07
    • 2018-03-11
    • 2016-08-16
    • 2019-03-17
    • 1970-01-01
    相关资源
    最近更新 更多