awk出力と文字列操作

awk出力と文字列操作

次の出力に行が必要です。

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=", "

関連情報