gpt4 book ai didi

regex - Sed & 正则表达式 : match between two characters only sometimes successful

转载 作者:太空狗 更新时间:2023-10-29 11:32:04 24 4
gpt4 key购买 nike

当我执行命令时

echo '<test>' | sed -e 's/<\(.*\)>/\1/g'

我得到了字符串

test

回来了。当我执行命令时

echo 'Jun 10 13:23:16 server /opt/app/introdedaemon/sbin/mq2init[14150]: Debug 1433935396.995245: (XMLRPCConnector.cpp)(MQMessage)(98)[domt initrode.om]: encoded string: <aGVyZSBpcyBub3RoaW5n c3RpbGwgbm90aGluZw== > (size 908)' | sed -e 's/<\(.*\)>/\1/g'

我会期望得到字符串

aGVyZSBpcyBub3RoaW5n c3RpbGwgbm90aGluZw== 

返回,但相反我得到了字符串

Jun 10 13:23:16 server /opt/app/introdedaemon/sbin/mq2init[14150]: Debug 1433935396.995245: (XMLRPCConnector.cpp)(MQMessage)(98)[domt initrode.om]: encoded string: aGVyZSBpcyBub3RoaW5n c3RpbGwgbm90aGluZw==  (size 908)

返回。 为什么会这样以及我可以用哪个正则表达式返回字符串“<”和“>”之间的部分

Jun 10 13:23:16 server /opt/app/introdedaemon/sbin/mq2init[14150]: Debug 1433935396.995245: (XMLRPCConnector.cpp)(MQMessage)(98)[domt initrode.om]: encoded string: <aGVyZSBpcyBub3RoaW5n c3RpbGwgbm90aGluZw== > (size 908)

?

最佳答案

你需要使用:

sed 's/.*<\(.*\)>.*/\1/'

因为<之前有一段文字在 > 之后还有。

这将给出如下输出:

aGVyZSBpcyBub3RoaW5n c3RpbGwgbm90aGluZw==

使用这个更简单的 awk 可以获得相同的输出命令还:

awk -F '[<>]' '{print $2}'

关于regex - Sed & 正则表达式 : match between two characters only sometimes successful,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30755449/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com