Найти имена репозиториев из гитолитного информационного вывода

Как извлечь имена из вывода команды gitolite info , для дальнейшего подключения к сценарию?

Я пишу сценарий миграции, чтобы перенести все мои репозитории с гитолита на сервер Gitlab. Таким образом, я хочу получить все имена репозитория от гитолита и использовать их в Gitlab. Ниже приведен пример вывода, с которым я пытаюсь сопоставить.

 hello sitaram, this is gitolite v2.1-29-g5a125fa running on git 1.7.4.4 the gitolite config gives you the following access: R SecureBrowse RW anu-wsd RW entrans @RW git-notes @RW gitolite RW gitolite-admin RW indic_web_input @CRW private/sitaram/[\w.-]+ RW proxy @C @RW public/sitaram/[\w.-]+ @R_ @W_ testing RW vic 

Это должно выводить:

 SecureBrowse anu-wsd entrans git-notes gitolite gitolite-admin indic_web_input proxy testing vkc 

В настоящее время я пытаюсь поместить это в сценарий оболочки, поэтому он будет полезен для других. Мой текущий подход – это команда grep , которая выглядит следующим образом:

 grep -Eio "([A-Za-z0-9_-]+)$" gitolite-info-output 

Однако это также фиксирует 4 в конце первой строки. Я пытался несколько подходов, но я не могу исключить это правильно, не включая и не исключая других вещей.

Выполнение этой ОС X 10.10.3 .

One Solution collect form web for “Найти имена репозиториев из гитолитного информационного вывода”

На основании ввода, который вы укажете в своем вопросе, это должно работать:

 $ grep -oP '^[ @]*R.* \K.*' gitolite-info-output SecureBrowse anu-wsd entrans git-notes gitolite gitolite-admin indic_web_input proxy testing vic 

Это использование переключателя -P GNU grep для включения регулярных выражений, совместимых с Perl, которые дают нам \K : «Исключить все, что соответствует до этого момента». В сочетании с -o мы можем искать строки, начинающиеся с 0 или более пробелов, или @ ( ^[ @]* ), затем R , затем 0 или более символов до другого места. Все это отбрасывается из-за \K поэтому печатается только последнее слово.


Если у вас нет GNU grep (например, в OSX), вы можете сделать что-то вроде этого:

 $ grep -E '^[ @]*R' gitolite-info-output | awk '{print $NF}' SecureBrowse anu-wsd entrans git-notes gitolite gitolite-admin indic_web_input proxy testing vic 

Или все это в awk :

 $ awk '/^[ @]*R/{print $NF}' gitolite-info-output SecureBrowse anu-wsd entrans git-notes gitolite gitolite-admin indic_web_input proxy testing vic 

Или Perl:

 $ perl -nle '/^[ @]*R.*\s(.*)/ && print $1' gitolite-info-output SecureBrowse anu-wsd entrans git-notes gitolite gitolite-admin indic_web_input proxy testing vic 
  • Проблемы при разметке eMMC с использованием sfdisk
  • Показать текст в виде звездочек
  • Чтение строки переменного размера и разбиение ее содержимого на отдельные строки с текстом
  • Unix: проблема с командой cmp
  • GNU parallel vs & (я имею в виду фон) vs xargs -P
  • Удалите первые n строк из файла с переменной
  • Shell Script: захватывать строку в середине текста, иногда в начале
  • cron job for pure-quotacheck с чистым списком pw
  • Зачем писать полный скрипт bash в функциях?
  • Прогулка по файлам в каталоге случайным образом
  • Запустить Comand для всех файлов (вложенных папок в папках)
  • Interesting Posts

    проверить порядковый номер в трейлере файла

    Как создать DVD из сетевого репозитория

    Как я могу проверить, что удаленный компьютер находится в сети для ssh / script acess?

    Рекурсивно скопировать apache openmeetings в папку red5 на linux

    Передайте вывод предыдущей команды следующей в качестве аргумента

    объединить два файла без добавления новой строки

    Как заставить find следовать большинству, но не всем, символическим ссылкам?

    Где хранится файл конфигурации ibus?

    Попытка добавить ОС Solaris (SunOS) OS 11.2 в качестве двойной загрузки под Grub2

    Запуск / остановка программы с веб-сайта

    tcpdump не захватывает трафик http или tcp / ssl

    получить использование ЦП VM (linux) с помощью java

    Как разделить переменную $ 0, чтобы найти каталог и относительные пути в bash?

    Ошибка записи: на устройстве нет места. Удаление дополнительных пакетов. Попытка восстановления

    nmcli не отображают карту wlan в пользовательской области

    Linux и Unix - лучшая ОС в мире.