sed 以匹配多个匹配项中的第一个模式

sed to match first pattern among multiple matches

所以对于像

这样的给定文本

a[test] asdfasdf [sdfsdf]b

我想要第一个方括号 (regex = [.*]) 内的文本的第一个匹配项,因此在本例中 [test].

我尝试了以下命令但没有用:

echo "a[test] asdfasdf [sdfsdf]b" | sed -n -e 's/.*\(\[.*\]\).*//p'

这是回归[sdfsdf]

如何获得 [test]

.* 将 select 最长的匹配。请改用 [^[]*[^]]*

sed -n -e 's/[^[]*\(\[[^]]*\]\).*//p'