sed->从字符串中替换固定文本和括号

如何表达这个表情

echo "ObjectId(5e257e424ed10b0015e3e780),'qwe',ObjectId(5e257e424ed10b0015e3e780),()"

对此

5e257e424ed10b0015e3e780,'qwe',5e257e424ed10b0015e3e780,()

使用sed? 我用这个:

echo "ObjectId(5e257e424ed10b0015e3e780),'qwe',ObjectId(5e257e424ed10b0015e3e780),()" | sed 's/ObjectId(([a-z0-9])/\1/''

,但我无法删除最后一个括号。谢谢!

评论
  • qporro
    qporro 回复

    您可以使用

    sed 's/ObjectId(\([[:alnum:]]*\))/\1/g'
    

    See the online demo

    POSIX BRE模式的意思是:

    • ObjectId( - matches a literal string
    • \([[:alnum:]]*\) - Group 1: zero or more alphanumeric chars
    • ) - a literal ).

    The \1 replacement will keep the Group 1 value only.

    The g flag will replace all occurrences.