Получить только часть uname -r в bash

Мне нужно получить только первые два числа команды "uname -r" в Bash

Пример регулярного выхода:

uname -r
3.5.0-18-generic

что я ожидаю, используя магические опции bash:

3.5

3 ответа

Решение

При условии, что вы хотите все до второй точки, это будет делать то, что вы хотите:

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

Сам uname не поддерживает обрезку вывода, афаик. Труба через разрез покажет вам поля 1 и 2 (-f1-2), разделенные точками (-d.)

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

Вы также можете сделать это с помощью расширения параметров:

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

${VAR%pat} не жадно удаляет pat с конца VAR, Обратите внимание, что pat является шаблоном глобуса, то есть точка просто означает "точка", а звезда означает "любое число символов".

Другие вопросы по тегам