Удалить из файла повторяющиеся строки в другом порядке

В этом вопросе вы поднимаете два разных вопроса.

  1. Как разрешить/проверить привилегии sudo для пользователя A
    Ссылка на домашнюю страницу проекта Sudo

  2. Как просмотреть настройки sudo от имени пользователя B (, а не root)

#1 можно выполнить, углубившись в документацию для /etc/sudoers и связанных файлов sudo и команды. У меня нет опыта ограничения команд одним пользователем в качестве другого пользователя, не являющегося -root, поэтому я не могу точно сказать, за исключением того, что я случайно знаю, что это можно сделать.

#2 полностью проблема с разрешениями конфигураций для sudo, таких как /etc/sudoers /etc/sudo.conf /etc/sudoers.d/ *и т. д. В моих системах эти файлы находятся в режиме -r--r-----. root rootВаш пользователь B не смог бы их прочитать без:

  1. быть членом корневой группы
  2. обращение к системному администратору с просьбой изменить эти разрешения.

Это так просто; без одной из этих двух вещей пользователь B не сможет прочитать или проанализировать файл.

2
04.08.2019, 17:52
3 ответа

Вы можете использовать хеш-код для отсортированных элементов:

$ perl -lne 'print unless $h{join ",", sort split /, /, $_}++' file
alice, bob
bob, cat
cat, dennis
dennis, alice

Ровно для 2 полей может хватить чего-то подобного

$ awk -F', ' '!seen[$2 FS $1]; {seen[$0]++}' file
alice, bob
bob, cat
cat, dennis
dennis, alice
3
27.01.2020, 22:02

Каждая строка сортируется по полям, затем файл и выбираются только уникальные строки

while read line
  do
    echo $line |
    tr ',' '\n' |
    sort |
    tr '\n' ','
done < 1 |
sed -e 's/^,//' -e 's/,$//' -e 's/,,/\n/g' |
sort -u
-1
27.01.2020, 22:02

Идиоматический ответ awk:

$ awk -F', ' '!seen[$1>$2 ? $1 FS $2 : $2 FS $1]++' file
alice, bob
bob, cat
cat, dennis
dennis, alice

Общий подход для любого количества полей состоит в том, чтобы отсортировать их и использовать отсортированный список в качестве индекса для visible[].

1
27.01.2020, 22:02

Теги

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