Sed&Regex:两个字符之间的匹配有时只有成功

sim*_*mon 2 regex linux sed

当我执行命令

echo '<test>' | sed -e 's/<\(.*\)>/\1/g'
Run Code Online (Sandbox Code Playgroud)

我得到了字符串

test
Run Code Online (Sandbox Code Playgroud)

回.当我执行命令

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'
Run Code Online (Sandbox Code Playgroud)

希望得到这个字符串

aGVyZSBpcyBub3RoaW5n c3RpbGwgbm90aGluZw== 
Run Code Online (Sandbox Code Playgroud)

回来了,但不是我得到的字符串

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)
Run Code Online (Sandbox Code Playgroud)

背部.为什么会发生这种情况,并且我可以将正则表达式返回到字符串的"<"和">"之间

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)
Run Code Online (Sandbox Code Playgroud)

anu*_*ava 6

你需要使用:

sed 's/.*<\(.*\)>.*/\1/'
Run Code Online (Sandbox Code Playgroud)

因为之前<和之后>也有文字.

这将输出为:

aGVyZSBpcyBub3RoaW5n c3RpbGwgbm90aGluZw==
Run Code Online (Sandbox Code Playgroud)

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

awk -F '[<>]' '{print $2}'
Run Code Online (Sandbox Code Playgroud)