Обратите внимание, что приведенное ниже относится только к GNU sed
; BSD sed
будет вести себя иначе.
Хорошо, давайте пошагово, используя это для содержимогоnames
:
Alice Zylanzy
Zepher Applecart
Michael Copperside
Мы возьмем команду и рассмотрим ее по частям, чтобы посмотреть, как она работает.:
$ sed 's/\(\w*\) \(\w*\)/\2 \1 \2/' names
Zylanzy Alice Zylanzy
Applecart Zepher Applecart
Copperside Michael Copperside
Таким образом, команда sed
ставит повторяющуюся фамилию в начале строки. Затем мы делаем простоеsort
:
$ sed 's/\(\w*\) \(\w*\)/\2 \1 \2/' names | sort
Applecart Zepher Applecart
Copperside Michael Copperside
Zylanzy Alice Zylanzy
Круто, теперь по фамилии сортируются. Теперь мы используем cut
, чтобы избавиться от префикса, который мы использовали :
$ sed 's/\(\w*\) \(\w*\)/\2 \1 \2/' names | sort | cut -f 2-3 -d " "
Zepher Applecart
Michael Copperside
Alice Zylanzy
..а Боб твой дядя, как говорится.
Вникнуть в суть того, как эта sed
команда работает:\w
— это магическое заклинание, означающее «словесный символ», что является сокращением от /[0-9A-Za-z_]/
. \w*
просто означает ноль или более «словесных символов», именно так группируются имена. Предполагая, что ни в одном из имен нет символов подчеркивания или цифр, его можно было бы переписать как:
sed 's/\([A-Za-z]*\) \([A-Za-z]*\)/\2 \1 \2/' names
Разбить всю sed
команду по частям:
Команда sed s
представляет собой команду «поиск и замена» или «подстановка». Выражение между первым и вторым /
s заменяется тем, что находится между вторым и третьим /
s.
Итак, мы заменяем это:
NODE EXPLANATION
--------------------------------------------------------------------------------
( group and capture to \1:
\w* word characters (a-z, A-Z, 0-9, _) (0 or
more times (matching the most amount
possible))
) end of \1
' '
( group and capture to \2:
\w* word characters (a-z, A-Z, 0-9, _) (0 or
more times (matching the most amount
possible))
) end of \2
С этим:
NODE EXPLANATION
--------------------------------------------------------------------------------
\2 what was matched by capture \2
' '
\1 what was matched by capture \1
' '
\2 what was matched by capture \2
См./usr/share/doc/libvirt-daemon/README.Debian
:группа libvirt
управляет доступом к libvirt через PolicyKit (, как вы определили ), а libvirt-qemu
— это пользователь и группа, используемые для запуска системных процессов QEMU/KVM. Вам не нужно заботиться о последнем,это деталь реализации, а не группа, в которую необходимо добавить конечных пользователей.
Членство в группе kvm
предоставляет доступ к /dev/kvm
, что необходимо для запуска виртуальных машин с использованием KVM. Это управляется с помощью uaccess
now, поэтому текущий -активный пользователь на консоли получает доступ автоматически. Первичная группа libvirt-qemu
— kvm
, так виртуальные машины, управляемые libvirt -, получают доступ к KVM.