Как я могу сопоставить строку, которой не предшествует цифра, используя awk?

Просто создайте обычные учетные записи пользователей, как обычно (например, useradd или какой-нибудь инструмент с графическим интерфейсом, если хотите). Для пользователей, которым вы хотите предоставить root-доступ, у вас есть два варианта.

Либо (а) используйте sudo и добавьте учетные записи пользователей-администраторов в /etc/sudoers, либо (б) создайте для них другой набор учетных записей пользователей с другое имя, но UID = 0, и пусть они используют su для доступа к этим учетным записям.

Преимущество создания отдельных учетных записей с UID 0 состоит в том, что у администраторов может быть отдельный пароль root, и эти пароли могут быть разными для разных администраторов.

0
18.02.2017, 00:31
3 ответа

Вы можете использовать отрицательный класс символов: [^ 0-9] означает «любой символ, кроме цифры»:

awk '$2~/[^0-9]3N/' file

Если вы также хотите соответствует случаям, когда 3N находится в самом начале поля, поэтому перед ним нет символов, используйте:

awk '$2~/(^|[^0-9])3N/' file

Если вы хотите напечатать только второе поле, а не всю строку, используйте:

awk '$2~/[^0-9]3N/{print $2}' file

или

awk '$2~/(^|[^0-9])3N/{print $2}' file
5
28.01.2020, 02:16

Использование grep:

grep [^0-9][3][N] file

v - чтобы показать те, которые не соответствуют / инвертировать совпадения

{{1} }

[0-9] [3] [N] - шаблон для поиска 3N с положительным целым предшествующим числом.

0
28.01.2020, 02:16

Протестировано с помощью приведенной ниже команды, и в приведенном выше примере все работает нормально

awk '$2 ~ /[A-Za-z]3N/{print $0}' filename
0
28.01.2020, 02:16

Теги

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