Tente isto:
echo $STRING | awk -F', | ' '{print $8}'
Funciona no meu fim.
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
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"
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##* }"
se você quiser sempre capturar a versão # (começa com v), então tente isso
echo ${STR} | awk '$0~/^v/' RS=", "
Tags awk