На самом деле это единственный раздел про unix на этом форуме
Модераторы: /dev/random , Модераторы разделов
Institut
Сообщения: 281
ОС: mint
Сообщение
Institut » 07.11.2017 20:56
Добрый день. Возникла необходимость просмотреть и записать на флешку, что-бы перенести в другое место, список установленных пакетов.
Например.
Делаю так
Код: Выделить всё
pacman -Q | grep virtualbox | sed ':a;N;$!ba;s/\n/ /g'
"Выход"
Код: Выделить всё
virtualbox 5.2.0-1 virtualbox-ext-oracle 5.2.0-1 virtualbox-guest-iso 5.2.0-1 virtualbox-host-dkms 5.2.0-1
Но цифры мне не нужны, только имена. Переделал так
Код: Выделить всё
pacman -Q | grep virtualbox | awk '{ print $1 }' | sed ':a;N;$!ba;s/\n/ /g'
"Вывод"
Код: Выделить всё
virtualbox virtualbox-ext-oracle virtualbox-guest-iso virtualbox-host-dkms
Вроде то, что нужно. Вопрос - а можно-ли от awk избавиться, только через sed сделать?
Количество пакетов везде разное.
Bizdelnick
Модератор
Сообщения: 21243
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 07.11.2017 21:16
А как выглядит необработанный вывод pacman -Q ?
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик
Institut
Сообщения: 281
ОС: mint
Сообщение
Institut » 07.11.2017 21:21
Код: Выделить всё
pacman -Q | grep virtualbox
virtualbox 5.2.0-1
virtualbox-ext-oracle 5.2.0-1
virtualbox-guest-iso 5.2.0-1
virtualbox-host-dkms 5.2.0-1
Списки пакетов идут строками, ищу только нужные мне пакеты.
Vascom
Сообщения: 1699
ОС: Fedora 32
Сообщение
Vascom » 07.11.2017 22:33
Можно вместо awk использовать cut -d " " -f1
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL
Сообщение
SLEDopit » 07.11.2017 23:29
Institut писал(а): ↑ 07.11.2017 20:56
Вопрос - а можно-ли от awk избавиться, только через sed сделать?
Можно заодно и от grep'а избавиться:
Код: Выделить всё
pacman -Q | sed -n '/virtualbox/{s/ .*//;H};${g;s/\n/ /g;p}'
С вашим примером входных данных это выглядит примерно так:
Код: Выделить всё
$ cat 222
dhskhksjdhk 5.2.0-1
virtualbox 5.2.0-1
virtualbox-ext-oracle 5.2.0-1
virtualbox-guest-iso 5.2.0-1
dhsjkdhjsk 5.2.0-1
virtualbox-host-dkms 5.2.0-1
$ sed -n '/virtualbox/{s/ .*//;H};${g;s/\n/ /g;p}' 222
virtualbox virtualbox-ext-oracle virtualbox-guest-iso virtualbox-host-dkms
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Bizdelnick
Модератор
Сообщения: 21243
Статус: nulla salus bello
ОС: Debian GNU/Linux
Сообщение
Bizdelnick » 07.11.2017 23:48
Как вариант:
pacman -Q | sed -nr 's/(^virtualbox\S*).*/\1/;$!T;$Ta;H;:a;${g;y/\n/ /;p}'
Хотя с одним awk проще:
pacman -Q | awk '/^virtualbox/{printf "%s ", $1 }; END{ print "" }'
Upd. Вариант
SLEDopit а с sed лучше моего.
Пишите правильно:
в консоли
вк у́пе (с чем-либо)
в о бщем
воо бще в течение (часа)
новичо к
ню анс
по у молчанию приемле мо
проблем а
пробо вать
траф ик
Alexxx
Сообщения: 892
Статус: --==XXX==--
ОС: Archlinux current
Сообщение
Alexxx » 08.11.2017 15:19
Как вариант:
Можно также "pacman -Qsq virtualbox" -- дольше отрабатывает только.
SLEDopit
Модератор
Сообщения: 4823
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL
Сообщение
SLEDopit » 08.11.2017 21:39
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Institut
Сообщения: 281
ОС: mint
Сообщение
Institut » 08.11.2017 21:58
pacman -Q | sed -n '/virtualbox/{s/ .*//;H};${g;s/\n/ /g;p}'
Ага, оно работает. Коротко и сердито. Спасибо.
Spoiler И понимаешь для себя, что ещё надо много чему учиться.
RusWolf
Сообщения: 613
ОС: Arch Linux x64 на BTRFS
Сообщение
RusWolf » 09.11.2017 08:11
У вас нет необходимых прав для просмотра вложений в этом сообщении.