На Xubuntu он работает "из коробки", чтобы монтировать и извлекать USB-накопитель, разделы жесткого диска, CD / DVD и, возможно, многое другое.
Предположим, что решение, выбранное Ubuntu с помощью policyKit, достаточно безопасно.
В XFCE в Debian 8.3 мне нужно было разрешить пользователю монтировать и извлекать файловые системы из thunar без пароля. Что сработало для меня, так это выбор файла разрешений из Ubuntu.
Добавление строк ниже как root в файл с именем /var/lib/polkit-1/localauthority/10-vendor.d/com.ubuntu.desktop.pkla
должно помочь:
[Mounting, checking, etc. of internal drives]
Identity=unix-group:admin;unix-group:sudo
Action=org.freedesktop.udisks.filesystem-*;org.freedesktop.udisks.drive-ata-smart*;org.freedesktop.udisks2.filesystem-mount-system;org.freedesktop.udisks2.encrypted-unlock-system;org.freedesktop.udisks2.filesystem-fstab;
ResultActive=yes
(На самом деле я выбрал немного больше из файла с таким же именем в Ubuntu 16.04, и это сработало для меня. Если вам это нужно, это в основном выглядит как содержимое https: //gist.github .com / kafene / 5b4aa4ebbd9229fa2e73 )
Верны ли эти выходные данные?
1.056000e+0 5.000000e-1 2.454400e-3 2.914800e-2 8.141500e-6
2.043430e+1 5.000000e-1 2.750500e-3 2.698100e-2-2.034300e-4
3.829842e+1 5.000000e-1 1.969923e-2 2.211364e-2 9.499900e-6
4.168521e+1 5.000000e-1 1.601262e-2 3.030919e-2-3.372000e-6
6.661784e+1 5.000000e-1 5.250575e-2 3.443669e-2 2.585500e-5
7.278104e+1 5.000000e-1 2.137055e-2 2.601701e-2 8.999800e-5
9.077287e+1 5.000000e-1 1.320498e-2 2.961020e-2-1.011600e-5
9.248130e+1 5.000000e-1 3.069610e-3 2.786329e-2-6.317000e-5
1.049935e+2 5.000000e-1 4.218794e-2 3.321955e-2-5.097000e-6
1.216283e+2 5.000000e-1 1.432105e-2 3.077165e-2 4.300300e-5
Код:
perl -lne 's/(\.\d+)(\+|\-)/\1e\2/g; print' sample
Пояснение:
-lne
позаботьтесь о концах строк, обработайте каждую строку ввода, выполните следующий код
s/(\.\d+)(\+|\-)/\1e\2/g
:
s
)(.\d+)(\+|\-)
найти две группы из (точка и цифры )и (плюс или минус)\1e\2
замените их первой группой, затем e
, затем второй группой g
глобально -не останавливаться на первой подстановке в каждой строке, а обрабатывать все возможные совпадения print
напечатать строку
sample
входной файл Это добавляет пробел, если он отсутствует. На самом деле он помещает пробел между числами независимо. Т.е. если бы в каком-то случае было два пробела, в выводе был бы только один.
perl -lne 's/(\.\d+)(\+|\-)(\d+)(\s*)/\1e\2\3 /g; print' sample
Большая часть похожа на предыдущую. Новым является группа (\d+)
номер 3 и группа (\s*)
номер 4. *
здесь означает необязательный. В замене не используется \4
. Вместо этого есть место.
Вывод такой:
1.056000e+0 5.000000e-1 2.454400e-3 2.914800e-2 8.141500e-6
2.043430e+1 5.000000e-1 2.750500e-3 2.698100e-2 -2.034300e-4
3.829842e+1 5.000000e-1 1.969923e-2 2.211364e-2 9.499900e-6
4.168521e+1 5.000000e-1 1.601262e-2 3.030919e-2 -3.372000e-6
6.661784e+1 5.000000e-1 5.250575e-2 3.443669e-2 2.585500e-5
7.278104e+1 5.000000e-1 2.137055e-2 2.601701e-2 8.999800e-5
9.077287e+1 5.000000e-1 1.320498e-2 2.961020e-2 -1.011600e-5
9.248130e+1 5.000000e-1 3.069610e-3 2.786329e-2 -6.317000e-5
1.049935e+2 5.000000e-1 4.218794e-2 3.321955e-2 -5.097000e-6
1.216283e+2 5.000000e-1 1.432105e-2 3.077165e-2 4.300300e-5
Вы также можете использовать sed
, например.:
<infile sed -E 's/([0-9])([+-])([0-9])/\1e\2\3/g' | awk '{ print $1 + 0 }'
Однако при этом не учитывается, что столбцы в листинге OP иногда не разделены. Вот обходной путь с соответствующей точностью:
<infile sed -E 's/.{11}/& /g' |
sed -E 's/([0-9])([+-])/\1e\2/g' |
gawk '{ print $1 + 0 }' OFMT='%.7g'
Выход:
1.056
20.4343
38.29842
41.68521
66.61784
72.78104
90.77287
92.4813
104.9935
121.6283