【问题标题】:Replacing with sed a string containing parenthesis with a substring of contained date into the parenthesis用 sed 将包含括号的字符串替换为括号中包含日期的子字符串
【发布时间】:2017-12-02 04:40:12
【问题描述】:

我想用“sed”将包含括号的字符串替换为括号中包含的字符串的一部分。

输入

to_date('04/10/12','DD/MM/RR')

输出

'04/10/12'

有可能吗?怎么样?

输入中可以出现多次

我试过了

sed -e 's/to_date(//'' -e 's/,\'DD/MM/RR\')//g'

但我想要一个替代表达式

【问题讨论】:

  • 是的,我试过 -e 's/to_date(//'' -e 's/,\'DD/MM/RR\')//g' 但我想要一个替代品表达

标签: regex bash sed


【解决方案1】:

你可以使用这个sed:

sed -E "s/to_date\(('[^']+')[^)]*\)/\1/g" <<< "to_date('04/10/12','DD/MM/RR')"

'04/10/12'

【讨论】:

    【解决方案2】:

    你也可以使用这个 sed

    sed -E "s/[^']*('[^']*').*/\1/" <<< "to_date('04/10/12','DD/MM/RR')"
    

    【讨论】:

    • 是的,它也可以正常工作。是否可以在 sed 命令中混合 -E 和 -e 选项?我试过了,但我有一个奇怪的错误信息:“没有这样的文件或目录”
    • 是的,有可能。举一个你得到这个错误信息的行的例子。
    • 这里是一个例子:sed -E "s/[^']*('[^']*').*/\1/" -e 's/12/13/'
    • 这样使用:sed -E -e "s/[^']*('[^']*').*/\1/" -e 's/12/13 /'
    • 好的,谢谢。我现在明白“-E”的含义了。 anubhava 的答案更好,因为它不会删除位于同一行中“to_date”之前和之后的现有字符串。
    猜你喜欢
    • 2020-06-12
    • 2017-08-04
    • 1970-01-01
    • 2021-12-01
    • 2019-08-24
    • 2015-10-01
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    相关资源
    最近更新 更多