Поиск и замена строк в github с помощью git grep - PullRequest
1 голос
/ 29 января 2020

У меня есть куча git репозиториев, и мне нужно найти и заменить строку URL для следующих условий:

  • Http должен быть изменен на https, если https уже присутствует, тогда оставьте его
  • Поиск «некоторый домен» (он может присутствовать или не присутствовать), за которым следует предварительно заданная строка поиска, замените поиск на «некоторый домен» (если он существует), за которым следует измененная предварительно заданная строка поиска.

Так, например, приведены следующие URL-адреса:

http://abc.repos.dev.com
http://repos.dev.com

Должен возвращаться

https://abc.repos.prod.com
https://repos.prod.com

Где repos.dev.com следует заменить на repos.prod.com и abc - это произвольный домен.

Существует множество файлов, которые необходимо отсканировать и заменить их содержимое URL. Мне повезло с более простым решением более простого требования (не были задействованы http, https или произвольные домены) с использованием:

git grep -l repos.dev.com | xargs sed -i '' -e 's/repos.dev.com/repos.prod.com/g'

Я пробовал следующее:

git grep -lE '(http|https)://.*?repos.dev.com' | xargs sed -i '' -e 's/(http|https):\/\/.*?repos.dev.com/https:\/\/.*repos.prod.com/g'

Но Я думаю, что есть пара проблем, одна вещь, которую я могу заметить, это то, что глобальная замена может не брать «произвольный» префикс URL домена до требуемой измененной строки (это вообще возможно?)

Кто-нибудь быть в состоянии пролить свет на то, что я делаю неправильно?

...