Помимо моего предыдущего ответа , существует также команда csplit
, чтобы разбить файл таким же образом, а затем использовать команду paste
для получения желаемого результата.
csplit -zs -f outputfile inputfile '/^List/' '{*}'
paste outfile*
'/^List/'
— это шаблон для сопоставления и разбиения файла на следующий новый файл '{*}'
повторить шаблон столько раз, сколько возможно -z
используется для удаления пустых выходных файлов;и -s
используется, чтобы не печатать подсчет размеров выходных файлов -f
используется для определения пользовательского префикса выходного файла ##, где ##
по умолчанию 2 цифры, вы можете определить его с помощью-n N
(N — количество цифр в суффиксе после определенного префикса)Первые два способа, которые я могу придумать, это:
1] Просто используйте sudo
, это сделано для буквального запуска программы от имени другого пользователя. Запустите строку ниже как root, например, где «root» запускает программу, как если бы это был пользователь «newUser»`
root@foo $> sudo -u newUser whoami
=> newUser
Затем не забудьте прочитать man sudo
.
2] Могут быть различия в дистрибутивах, но в системе, которую я использую, у каждого пользователя свой crontab. Итак, если вы хотите, чтобы пользователь newUser
запускал что-то при загрузке.
newUser@foo $> crontab -e
и вы вставляете туда свою строку @reboot
.
Задание cron будет выполняться от имени пользователя, которому принадлежит crontab.
Это означает, что вы должны добавить задание @reboot
в crontab newUser
.
Вы можете сделать это двумя способами.:
crontab -u newUser -e
, чтобы добавить расписание задания в crontab newUser
, или newUser
и запустите crontab -e
, чтобы добавить расписание. Как обычный дневной пользователь с -по -, вы можете выполнять действия с первого по
sudo crontab -u newUser -e
или со второго по
sudo -u newUser crontab -e
(при условии, что вашему обычному пользователю разрешено использоватьsudo -u newUser
).