Настройка разрешений может привести к путанице, но на самом деле это не так. В общем, вам нужно сделать три вещи:
Создать пользователя
useradd -d /home/someuser -s /bin/bash someuser
sudo mkdir /home/someuser
Это настроит нового пользователя "some user" с домашним каталогом /home/someuser/
и использованием bash по умолчанию. оболочка.
Назначить пользователя sudoer
visudo
Это откроет /etc/sudoers
в nano. Если у вас есть другой редактор, вы всегда можете использовать его. Добавьте следующий файл под записью «root».
someuser ALL=(ALL:ALL) ALL
Сохраните файл, и теперь ваш новый пользователь someuser
является sudoer.
Установите пароль нового пользователя.
Чтобы завершить этот процесс, добавьте пароль для пользователя, чтобы он мог выполнять sudo. Если они захотят изменить пароль позже, они могут это сделать с помощью команды sudo passwd
.
sudo passwd someuser
-- then enter password && conf
Ваш новый пользователь теперь имеет возможность sudo получить доступ ко всему, что может root. Вы можете использовать событие sudo su
, чтобы действовать как root. Чтобы проверить это, выйдите из Kali как root и снова войдите в систему как новый пользователь. Или просто запустите su - someuser
и попробуйте sudoing.
Кроме того, предоставьте новому пользователю право собственности на его домашний каталог, используя chown -R someuser /home/someuser
Вот решение на Perl:
cat b.txt
(0,1,{35=9000.0, 36=9000.0, 33=9000.0, 34=9000.0})
perl -lne '$_=~/^\(([\d\,\.]+)\s*\{(.*)\}\)$/; @first=split /[,\s]/, $1; @second=split /,\s/, $2; map{($k, $v) = split "=", $_; $h{$k}=$v} @second; foreach $k (sort keys(%h)) { print join(" ", @first), " $k ",$h{$k}; }' b.txt
0 1 33 9000.0
0 1 34 9000.0
0 1 35 9000.0
0 1 36 9000.0
(Конечно, эту программу на Perl будет намного легче читать, если использовать более одной строки и если я буду знать, как присваивать значения переменным)
$n
<= десятичное значение перед запятой.%h
, ключами которого являются числа слева от =
и значения справа. $n
, key, coresp. ценность.$,
= OFS
<= $"
= разделитель выходного списка, по умолчанию пробел.perl -lne '$,=$";
($n, %h) = ( /^\((\d+),/, /(\d+)=([^,}]+)/g );
print $n, $_, $h{$_} for sort { $a <=> $b } keys %h;
' yourfile
0 33 9000.0
0 34 9000.0
0 35 9000.0
0 36 9000.0
Вот решение awk
:
sed 's/=/ /' <(awk -F"[,)(}{]" '{
for (i=4;i<NF;i+=2){printf"%s %s\n",$2,$i|"sort -nk2,3"}}
' infile.txt)
Выдача вывода:
0 33 9000.0
0 34 9000.0
0 35 9000.0
0 36 9000.0
, если ваши входные данные приведены ниже (, как это реализовано в ответе @Fedor):
(0,1,{35=9000.0, 36=9000.0, 33=9000.0, 34=9000.0})
Тогда команда будет:
sed 's/=/ /' <(awk -F"[,)(}{]" '{
for (i=5;i<NF;i+=2) {printf "%s %s %s\n",$2, $3,$i|"sort -nk2,3"}}
' infile.txt)
И вывод:
0 1 33 9000.0
0 1 34 9000.0
0 1 35 9000.0
0 1 36 9000.0
GNUawkрешение:
awk -F'[,=]' '{ gsub(/[({}) ]/,"",$0); for(i=2;i<NF;i+=2) a[$i]=$(i+1);
asorti(a,b); for(k in a) print $1,k,a[k] }' file
-F'[,=]'
-разделитель полей
gsub(/[({}) ]/,"",$0)
-удаление ненужных символов
for(i=2;i<NF;i+=2) a[$i]=$(i+1)
-сбор пар значений в массивa
asorti(a,b)
-сортировать массив a
по ключам
Выход:
0 33 9000.0
0 34 9000.0
0 35 9000.0
0 36 9000.0