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'
所以对于像
这样的给定文本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'