Как удалить те столбцы файла, в которых меньше двух цифр?

При устранении неполадок доступа sudo очень полезно использовать sudo -l . sudo -l печатает ваши sudo привилегии, а sudo -lU user печатает права этого пользователя sudo (если у вас есть все привилегии).

$ sudo -l
User muru may run the following commands on laptop:
    (ALL) ALL

sudo выводит строку для каждого совпадающего правила, указывая предоставленную привилегию, но не критерии соответствия.

Например, со следующими тремя правилами в трех разных файлах:

%wheel ALL = (ALL) ALL
muru ALL = (ALL:ALL) ALL
%muru ALL = (ALL) ALL

Результатом может быть:

# sudo -lU muru
User muru may run the following commands on laptop:
    (ALL) ALL
    (ALL) ALL
    (ALL : ALL) ALL

Что вы можете сделать, так это найти правила, которые предоставляют эти привилегии, и проверить, как целевой пользователь может им соответствовать. Каждая строка должна соответствовать правилу, которое sudo соответствует этому пользователю, поэтому, если есть три строки, должно быть три правила (если только ваша конфигурация sudo не выглядит странной и читает то же самое файл дважды или что-то в этом роде).

3
10.08.2016, 04:16
2 ответа

Вы можете сделать это с помощью sed (или других инструментов, таких как awk или perl).

Например

  sed -e :loop \
        -e 's/^[0-9]\{1\} //' \
        -e 's/ [0-9]\{1\}$//' \
        -e 's/ [0-9]\{1\} / /g' \
        -e 't loop' <input >output
2
27.01.2020, 21:18

Один из возможных способов с помощью perl:

perl -alne 'print join " ", grep { length > 1 } @F' file
2
27.01.2020, 21:18

Теги

Похожие вопросы