我的产品有一个名为db2level
的命令,其输出在
我需要从中提取8.1.1.64
,到目前为止,我想出来了,
db2level | grep "DB2 v" | awk '{print$5}'
给了我一个输出v8.1.1.64",
请帮我提取8.1.1.64
。感谢
答案 0 :(得分:3)
grep足以做到这一点:
db2level| grep -oP '(?<="DB2 v)[\d.]+(?=", )'
答案 1 :(得分:3)
只是用awk:
db2level | awk -F '"' '$2 ~ /^DB2 v/ {print substr($2,6)}'
答案 2 :(得分:2)
db2level | grep "DB2 v" | awk '{print$5}' | sed 's/[^0-9\.]//g'
删除所有数字和点
答案 3 :(得分:2)
sed是您进行常规提取任务的朋友:
db2level | sed -n -e 's/.*tokens are "DB2 v\([0-9.]*\)".*/\1/p'
sed行不会打印任何行(-n),而是可以发生替换给定正则表达式的行。行的开头和结尾的。*确保整行匹配。
答案 4 :(得分:2)
使用-o
选项尝试 grep :
db2level | grep -E -o "[0-9]+\.[0-9]+\.[0-9]\+[0-9]+"
答案 5 :(得分:2)
另一个sed
解决方案
db2level | sed -n -e '/v[0-9]/{s/.*DB2 v//;s/".*//;p}'
这个不依赖于特定格式的数字,只是在输出的特定位置。
答案 6 :(得分:1)
尝试s.th.比如db2level | grep "DB2 v" | cut -d'"' -f2 | cut -d'v' -f2
cut将输入分成几部分,用分隔符-d分隔并输出字段编号-f
答案 7 :(得分:1)
db2level | grep -o "v[0-9.]*" | tr -d v