【问题标题】:Sed command garbled error due to regex由于正则表达式,Sed 命令出现乱码错误
【发布时间】:2015-08-27 02:58:44
【问题描述】:

我必须按照 sed 命令将字符串 '-log -asofdate 20150901' 替换为包含今天日期的字符串:

sed 's'/"-log -asofdate [0-9*] "'/'"-log -asofdate $newAsOfDate"'/g'  /export/home/ownclp/temp/runjava.sh.bk > /export/home/ownclp/temp/runjava.sh

但是我不断收到 Sed 命令乱码错误。 如果我删除[0-9]*,则 sed 命令有效。

【问题讨论】:

    标签: regex bash shell unix sed


    【解决方案1】:

    * 字符类之后:

    [0-9]*
    

    分隔符不应该是斜线。

    我认为整个 cmd 应该是:

    sed "s~-log -asofdate [0-9]*~-log -asofdate $newAsOfDate~g" /export/home/ownclp/temp/runjava.sh.bk > /export/home/ownclp/temp/runjava.sh
    

    【讨论】:

    • 我试过了,但没用。我收到以下错误:sed:命令乱码:s/-log -asofdate [0-9]/-log -asofdate 01/08/2015/g
    • @ArchitSharma 尝试将sed 的分隔符更改为不是正斜杠的东西,例如s~-log -asofdate [0-9]*~-log -asofdate $newAsOfDate~g,当变量扩展时会有多个正斜杠。 @Bohemian,您也应该更改答案中的分隔符
    • 使用 \{8\} 而不是 * 以确保获取正确的日期参考
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 2020-05-21
    相关资源
    最近更新 更多