Question

I need to get only first two numbers of "uname -r" command in bash

example of regular out put:

uname -r
3.5.0-18-generic

what I expect using magic bash options:

3.5
Was it helpful?

Solution

assuming you want everything before the second dot, this will do what you want:

uname -r | cut -d. -f1-2

uname itself does not support cutting the output, afaik. The pipe through cut will show you fields 1 and 2 (-f1-2), delimited by dots (-d.)

OTHER TIPS

uname -r | sed 's/\([0-9]\+\.[0-9]\+\)\..*/\1/'

You could also accomplish this with parameter expansion:

$ r="$(uname -r)"
$ echo ${r%.*}
3.5

${VAR%pat} non-greedily removes pat from the end of VAR. Note that pat is a glob pattern i.e. dot just means "dot" and star means "any-number-of-chars".

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top