output do awk e manipulação de strings

0

Eu preciso de um one-liner, para a seguinte saída:

STRING='SNMPv2-MIB::sysDescr.0 = STRING: test test test, test v3.2.5.90, test'
echo $STRING | awk '{print $8}'
v3.2.5.90,

A saída desejada é

v3.2.5.90

Então, preciso remover a vírgula no final. Eu poderia canalizar novamente para sed mas isso significa que tem que haver uma solução de "um comando".

Obrigado antecipadamente

    
por M.S. 16.11.2016 / 08:32

4 respostas

0

Tente isto:

echo $STRING | awk -F', | ' '{print $8}'

Funciona no meu fim.

    
por 16.11.2016 / 10:12
1

Isso funciona com o grep -version 2.25 no Ubuntu

grep -oP '(?<=, test).*(?=,)' <<< "SNMPv2-MIB::sysDescr.0 = STRING: test test test, test v3.2.7.32.a, test"
    
por 16.11.2016 / 08:55
1

Experimente ferramentas comuns de string bash (mesmo POSIX / padrão sh ):

STRING='SNMPv2-MIB::sysDescr.0 = STRING: test test test, test v3.2.5.90, test'
OUTPUT=${STRING%,*}
printf '%s\n' "${OUTPUT##* }"
    
por 16.11.2016 / 12:10
0

se você quiser sempre capturar a versão # (começa com v), então tente isso

echo ${STR} | awk '$0~/^v/' RS=", "
    
por 16.11.2016 / 10:24

Tags