Extraia palavra e dígito da string usando SED [duplicado]
como posso extrair o TIC-9890nome de um branch que se parece comfeature/TIC-9890/some-other-wording
Não sou especialista em SED, mas consegui pensar em:
echo "feature/TIC-000/random-description" |
sed -n 's/.*\(TIC-[0-9]\{1,\}\).*/\1/'
Isso parece funcionar bem se a TIC-\d+string estiver lá, mas retorna a string inteira se estiver faltando ...
No entanto, preciso que ele retorne uma string nula ou vazia se a correspondência não estiver presente.
Respostas
Você deve adicionar uma popção para imprimir e deve voar então. Por que, porque paramos de imprimir sedusando -na opção, quando a substituição acontece, pprecisa ser usado para imprimi-lo.
echo "feature/TIC-000/random-description" | sed -n 's/.*\(TIC-[0-9]\{1,\}\).*/\1/p'
Da man sedpágina:
-n, --quiet, --silent suprime a impressão automática do espaço do padrão
p Imprima o espaço do padrão atual.
OU de acordo com os comentários de @anubhava, alguém poderia usar grepcom a -Eopção que poderíamos tentar:
echo "feature/TIC-000/random-description" | grep -oE 'TIC-[0-9]+'