У меня есть большое количество файлов, каждый из которых содержит команду bash с переменным количеством параметров. Мне нужно заменить их на соответствующий вызов API.
Пример команды bash в файле (Примечание: количество аргументов '-p' может быть разным, у некоторых их нет):
./some_script.sh http://some.server.com -p a=value -p b=value -p c=value
Пример соответствующего вызова API
http://some.server.com/api/some/endpoint?a=value&b=value&c=value
Моя проблема в том, что я не могу сгруппировать каждый параметр, учитывая, что число параметров является переменным.
Базовое регулярное выражение (это будет соответствовать приведенному выше примеру, но только первый параметр группы):
.\/some_script.sh\s([\w\/:\.]*)(\s-\w\s[\w=]*)
И я попробовал:
.\/some_script.sh\s([\w\/:\.]*)(\s-\w\s[\w=]*)*
Однако, похоже, это группирует только последний параметр.
(проверено с помощью regex101)
В идеале, я бы хотел, чтобы это регулярное выражение могло группировать неопределенное количество аргументов в этих файлах, чтобы я мог легко перестроить команду как вызов API.
Если требуется более подробная информация, пожалуйста, дайте мне знать, любые предложения приветствуются.