2

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
Ba7a7chy
  • 1,471
  • 4
  • 14
  • 29

3 Answers3

6

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.)

Yefim Dinitz
  • 414
  • 3
  • 9
3
uname -r | sed 's/\([0-9]\+\.[0-9]\+\)\..*/\1/'
dimir
  • 693
  • 6
  • 23
2

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".

Thor
  • 45,082
  • 11
  • 119
  • 130