Соответствие двум или шаблонам и обмен текстами на всех них - PullRequest
1 голос
/ 06 марта 2019

У меня есть проблема, когда мне нужно изменить разметку одного сайта на другой.Во-первых, у меня есть это в этом типе: [[https://stackoverflow.com/][StackOverflow]], где мне нужно изменить его на [StackOverflow|https://stackoverflow.com/].

Моя команда sed для этого будет

sed -i 's/\[\[\(.*\)\]\[\(.*\)\]\]/\[\2|\1\]/g' 

Это работает, только если у меня есть один совпадающий шаблон в строке, для большего сбоя.Что я должен изменить?

1 Ответ

1 голос
/ 06 марта 2019

Вы можете сопоставить любые 0 или более символов, используя [^][] выражение с отрицательными скобками:

sed -i 's/\[\[\([^][]*\)\]\[\([^][]*\)]]/[\2|\1]/g' file

См. online sed demo :

s="Text [[https://stackoverflow.com/][StackOverflow]] More text [[https://stackoverflow2.com/][StackOverflow2]]"
sed 's/\[\[\([^][]*\)\]\[\([^][]*\)]]/[\2|\1]/g' <<< "$s"

Вывод:

Text [StackOverflow|https://stackoverflow.com/] More text [StackOverflow2|https://stackoverflow2.com/]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...