Grep шаблон в шаблоне - PullRequest
0 голосов
/ 21 июня 2019
cat sudo.txt |tr -d "[:blank:]"|grep '=.*[ALLroot].*/usr/bin/vim'

Я хочу отслеживать ниже:

=(root)NOPASSWD:/usr/bin/vim
=(ALL)NOPASSWD:/usr/bin/vim
=NOPASSWD:/usr/bin/vim

но не:

=(user)NOPASSWD:/usr/bin/find

Ответы [ 2 ]

1 голос
/ 21 июня 2019

Учитывая представленные данные,

grep -E '\bNOPASSWD:/usr/bin/vim\b' sudo.txt

Если этого недостаточно, пожалуйста, покажите примеры и объясните отсутствующие требования.

0 голосов
/ 21 июня 2019

[ALLroot] соответствует A или L или r или o или t.Используйте (ALL|root) вместо

Дано:

cat sudo.txt
=(root)NOPASSWD:/usr/bin/vim
=(ALL)NOPASSWD:/usr/bin/vim
=NOPASSWD:/usr/bin/vim
=(user)NOPASSWD:/usr/bin/find

grep -E '=(\((root|ALL)\))?.*/usr/bin/vim' sudo.txt
=(root)NOPASSWD:/usr/bin/vim
=(ALL)NOPASSWD:/usr/bin/vim
=NOPASSWD:/usr/bin/vim

Объяснение:

опция -E: расширенный шаблон

=                   # equal sign
(                   # start group
  \(                # opening parenthesis
    (root|ALL)      # root OR ALL
  \)                # closing parenthesis
)?                  # end group, optional
.*                  # 0 or more any character
/usr/bin/vim        # literally
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...