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

相关内容