次の出力に行が必要です。
STRING='SNMPv2-MIB::sysDescr.0 = STRING: test test test, test v3.2.5.90, test'
echo $STRING | awk '{print $8}'
v3.2.5.90,
希望の出力は
v3.2.5.90
したがって、最後にコンマを削除する必要があります。再度sedにパイプすることができますが、これは「単一コマンド」ソリューションが必要であることを意味します。
事前にありがとう
答え1
これはUbuntuのgrep -version 2.25で動作します。
grep -oP '(?<=, test).*(?=,)' <<< "SNMPv2-MIB::sysDescr.0 = STRING: test test test, test v3.2.7.32.a, test"
答え2
一般的なbash(またはPOSIX / standard sh
)文字列ツールを試してください。
STRING='SNMPv2-MIB::sysDescr.0 = STRING: test test test, test v3.2.5.90, test'
OUTPUT=${STRING%,*}
printf '%s\n' "${OUTPUT##* }"
答え3
この試み:
echo $STRING | awk -F', | ' '{print $8}'
私のために動作します。
答え4
常にバージョン番号(vで始まる)をキャプチャーするには、以下を試してください。
echo ${STR} | awk '$0~/^v/' RS=", "