Com base na entrada que você mostra na sua pergunta, isso deve funcionar:
$ grep -oP '^[ @]*R.* \K.*' gitolite-info-output
SecureBrowse
anu-wsd
entrans
git-notes
gitolite
gitolite-admin
indic_web_input
proxy
testing
vic
Isso está usando a opção -P
do GNU grep para ativar as Expressões Regulares Compatíveis com Perl que nos fornecem \K
: "Excluir qualquer coisa que tenha sido correspondida até este ponto". Combinado com -o
, podemos procurar linhas começando com 0 ou mais espaços ou @
( ^[ @]*
), então R
, depois 0 ou mais caracteres até outro espaço. Tudo isso é descartado por causa do \K
, então somente a última palavra é impressa.
Se você não tem o GNU grep
(no OSX, por exemplo), você pode fazer algo assim:
$ grep -E '^[ @]*R' gitolite-info-output | awk '{print $NF}'
SecureBrowse
anu-wsd
entrans
git-notes
gitolite
gitolite-admin
indic_web_input
proxy
testing
vic
Ou faça tudo em awk
:
$ awk '/^[ @]*R/{print $NF}' gitolite-info-output
SecureBrowse
anu-wsd
entrans
git-notes
gitolite
gitolite-admin
indic_web_input
proxy
testing
vic
Ou 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