Regex sed->替换字符串中的固定文本和括号
如何表达这个意思Regex sed->替换字符串中的固定文本和括号,regex,bash,sed,Regex,Bash,Sed,如何表达这个意思 echo "ObjectId(5e257e424ed10b0015e3e780),'qwe',ObjectId(5e257e424ed10b0015e3e780),()" 对此 5e257e424ed10b0015e3e780,'qwe',5e257e424ed10b0015e3e780,() 使用sed 我用这个: echo "ObjectId(5e257e424ed10b0015e3e780),'qwe',ObjectId(5e257e424ed10b0015e3e78
echo "ObjectId(5e257e424ed10b0015e3e780),'qwe',ObjectId(5e257e424ed10b0015e3e780),()"
对此
5e257e424ed10b0015e3e780,'qwe',5e257e424ed10b0015e3e780,()
使用sed
我用这个:
echo "ObjectId(5e257e424ed10b0015e3e780),'qwe',ObjectId(5e257e424ed10b0015e3e780),()" | \
sed 's/ObjectId(\([a-z0-9]\)/\1/'
你可以用
sed 's/ObjectId(\([[:alnum:]]*\))/\1/g'
见
POSIX BRE模式意味着:
ObjectId-匹配文本字符串
\[[:alnum:][]*\-组1:零个或多个字母数字字符
-文字。
\1替换将仅保留组1值
g标志将替换所有事件。您可以使用
sed 's/ObjectId(\([[:alnum:]]*\))/\1/g'
见
POSIX BRE模式意味着:
ObjectId-匹配文本字符串
\[[:alnum:][]*\-组1:零个或多个字母数字字符
-文字。
\1替换将仅保留组1值
g标志将替换所有事件。输出如预期,5e257e424ed10b0015e3e780,'qwe',5e257e424ed10b0015e3e780,。为什么有人认为这个解决方案是错误的?@radya100好的,我修正了问题的格式并删除了令人困惑的部分。也许sed's/ObjectId\[^]*\/\1/g'文件?@potong当然,但在问题中,括号之间部分的要求没有指定。输出如预期的那样,5e257e424ed10b0015e3e780,'qwe',5e257e424ed10b0015e3e780,。为什么有人认为这个解决方案是错误的?@radya100好的,我修正了问题的格式并删除了令人困惑的部分。也许sed's/ObjectId\[^]*\/\1/g'文件?@potong当然,但在问题中,括号之间的部分的要求没有指定。你说预期的是5e257e424ed10b0015e3e780,'qwe',5e257e424ed10b0015e3e780,,但是你说我不能删除最后一个括号。请确认您需要的确切输出。您是否尝试过使用正则表达式测试仪,以查看正则表达式是否正确?@Bart regex101在测试应符合POSIX BRE的模式时应谨慎使用,因为该工具仅适用于PCRE、JS、Python re和Golang regex风格。我们应该知道以后如何转换模式以及要避免的构造。@WiktorStribiżew Good point!radya100请在使用测试工具时匹配您特定的正则表达式风格,您说预期的是5e257e424ed10b0015e3e780、'qwe',5e257e424ed10b0015e3e780,,但您说我不能删除最后的括号。请确认您需要的确切输出。您是否尝试过使用正则表达式测试仪,以查看正则表达式是否正确?@Bart regex101在测试应符合POSIX BRE的模式时应谨慎使用,因为该工具仅适用于PCRE、JS、Python re和Golang regex风格。我们应该知道以后如何转换模式以及要避免的构造。@WiktorStribiżew Good point!radya100请在使用测试工具时匹配您的特定正则表达式风格