you do not need multiple processes (sed | sed | sed ...). one process with awk should work.
if you have VERSION=xxxx as a string:
to get the first:
awk -F'[-=]' '{gsub(/\./,"",$2)}$0=$2'
to get the second:
awk -F'-|\\.def' '{split($2,a,".")}$0=a[2]'
test
first
kent$ echo "VERSION=2.6.32.54-0.1.def"|awk -F'[-=]' '{gsub(/\./,"",$2)}$0=$2' 263254
second
kent$ echo "VERSION=2.6.32.54-0.1.def"|awk -F'-|\\.def' '{split($2,a,".")}$0=a[2]' 1 kent$ echo "VERSION=2.6.32.54-0.1234.def"|awk -F'-|\\.def' '{split($2,a,".")}$0=a[2]' 1234
if you have VERSION=xxx as the $VERSION variable:
first: awk -F'-' '{gsub(/\./,"",$1)}$0=$1' second: awk -F'-|\\.def' '{split($2,a,".")}$0=a[2]'
test
VERSION=2.6.32.54-0.1234.def kent$ echo $VERSION|awk -F'-' '{gsub(/\./,"",$1)}$0=$1' 263254 7pLaptop 11:18:22 /tmp/test kent$ echo $VERSION|awk -F'-|\\.def' '{split($2,a,".")}$0=a[2]' 1234
source share