我需要一行,用于以下输出:
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=", "