Как загрузить инвентарь в Openstack

Вот еще несколько вариантов. Все они анализируют файл /etc/os-release, который в моем 13.10 выглядит так:

NAME="Ubuntu"
VERSION="13.10, Saucy Salamander"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 13.10"
VERSION_ID="13.10"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"

Все приведенные ниже решения будут анализировать вторую строку для создания Saucy Salamander.

] grep
grep -oP 'VERSION=.* \K\w* \w*' /etc/os-release
-o означает «распечатать только соответствующую часть строки», а функция -P позволяет использовать регулярные выражения, совместимые с Perl. Это позволяет нам использовать \K, который отбрасывает все, что было сопоставлено с этой точкой, что в сочетании с -o означает «печатать только то, что соответствует после \K. Таким образом, фактическое регулярное выражение будет соответствовать последним двум словам строка, содержащая VERSION=. awk
awk -F'[" ]' '/VERSION=/{print $3,$4}'  /etc/os-release
Установка разделителя полей в " и space означает, что 3-го и 4-го полей строки, содержащей VERSION=, являются следующей строкой. sed
sed -nr '/VERSION=/{s/.* (\w* \w*)"/\1/;p}' /etc/os-release
Переключатель -n подавляет нормальный выход, строки не будут напечатаны. -r позволяет использовать расширенные регулярные выражения. Затем в строках, соответствующих VERSION=, мы удалим все, кроме двух последних слов. p ] в конце означает печать. perl
perl -lne '/VERSION=.*\b(\w+ \w+)/ && print $1' /etc/os-release
-n означает «обрабатывать каждую строку ввода со сценарием, заданным -e». [F29] добавляет символ новой строки для каждого вызова печати (и некоторые другие вещи, которые здесь не представлены). Регулярное выражение соответствует последним двум словам (\b является границей слов) и печатает их, если строка содержит VERSION=. coreutils
grep VERSION= /etc/os-release | cut -d ' ' -f 2-  | tr -d '"' 
Здесь мы просто grep соответствующую строку и используем cut, устанавливая разделитель полей на space (-d ' ') и печатая все, начиная со второго поля до конца строки. Команда tr -d удалит " с конца. Чистая оболочка (бесстыдно воровство @ умная идея source gniourf_gniourf):
. /etc/os-release && echo ${VERSION//[0-9,. ]/ }
. источник файла, который делает переменные доступными для оболочки, и я использую возможности манипуляции с bash для удаления номеров версий.
1
задан 6 December 2016 в 02:06

0 ответов

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

Похожие вопросы: