sed, чтобы соответствовать первому шаблону среди нескольких совпадений - PullRequest
1 голос
/ 21 апреля 2020

Таким образом, для данного текста, например

a [test] asdfasdf [sdfsdf] b

Я хочу первое совпадение текста, которое находится в первых квадратных скобках (regex = [. *]), поэтому в этом случае [test].

Я попробовал следующую команду, она не работала:

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

Это возвращает [sdfsdf]

Как мне получить [test] вместо?

1 Ответ

2 голосов
/ 21 апреля 2020

.* выберет самое длинное совпадение. Вместо этого используйте [^[]* и [^]]*.

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