Extraia palavra e dígito da string usando SED [duplicado]

Aug 28 2020

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

4 RavinderSingh13 Aug 28 2020 at 17:38

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]+'