开发者

How to extract version from a single command line in linux?

开发者 https://www.devze.com 2023-04-11 02:39 出处:网络
I have a product which has a command called db2level whose output is given below I need to extract 8.1.1.64 out of it, so far i came up with,

I have a product which has a command called db2level whose output is given below

How to extract version from a single command line in linux?

I need to extract 8.1.1.64 out of it, so far i came up with,

db2level | grep "DB2 v开发者_如何学Go" | awk '{print$5}'

which gave me an output v8.1.1.64",

Please help me to fetch 8.1.1.64. Thanks


grep is enough to do that:

db2level| grep -oP '(?<="DB2 v)[\d.]+(?=", )'


Just with awk:

db2level | awk -F '"' '$2 ~ /^DB2 v/ {print substr($2,6)}'


db2level | grep "DB2 v" | awk '{print$5}' | sed 's/[^0-9\.]//g'

remove all but numbers and dot


sed is your friend for general extraction tasks:

db2level | sed -n -e 's/.*tokens are "DB2 v\([0-9.]*\)".*/\1/p'

The sed line does print no lines (the -n) but those where a replacement with the given regexp can happen. The .* at the beginning and the end of the line ensure that the whole line is matched.


Try grep with -o option:

db2level | grep -E -o "[0-9]+\.[0-9]+\.[0-9]\+[0-9]+"


Another sed solution

db2level | sed -n -e '/v[0-9]/{s/.*DB2 v//;s/".*//;p}'

This one desn't rely on the number being in a particular format, just in a particular place in the output.


db2level | grep -o "v[0-9.]*" | tr -d v


Try s.th. like db2level | grep "DB2 v" | cut -d'"' -f2 | cut -d'v' -f2

cut splits the input in parts, seperated by delimiter -d and outputs field number -f

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号