regex для сопоставления целой строки $0 в awk

Вы можете использовать параметры конфигурацииcreate maskи directory mask, чтобы настроить более разрешающую маску umask, чтобы разрешить членам группы (или всем )изменять файлы.

Например:

create mask = 0775
directory mask = 0775 

Имеются также соответствующие опцииforce crate modeи force directory mode. При использовании соответствующие разрешения всегда добавляются к созданным файлам и каталогам.

В зависимости от того, как настроены ваши пользователи:

  • Если все ваши пользователи входят в общую основную группу, достаточно использовать указанные выше параметры.

  • В случае, если первичные группы не являются общими, но пользователи являются членами общей группы, установите группу каталогов в общую группу и примените к нейбит setgid . Когда бит setgid установлен для каталога, новые созданные файлы наследуют группу каталога, а новые созданные каталоги также будут иметь установленный бит setgid .

  • Использоватьсписки контроля доступа POSIX. Чтобы включить ACL для файловой системы, вам может понадобиться использовать параметр монтирования acl. Когда для каталога установлен ACL по умолчанию, новые созданные файлы и каталоги наследуют ACL по умолчанию. Подробности см. в ответе о том, как наследовать групповые разрешения в Linux .

-1
31.10.2019, 23:49
2 ответа

Похоже, что очень старые версии awk не имели возможности {…}.

Этот старый синтаксис регулярных выражений должен совпадать с любым awk:

awk '/@ [0-9][0-9]?\/[0-9][0-9]?\/[0-9][0-9]?, [1-2]?[0-9]:[0-6][0-9] [AP]M/' file

Если бы ваш awk мог сопоставлять выражения в квадратных скобках, например [[:blank:]], регулярное выражение можно было бы сделать немного более гибким:

awk '/@[[:blank:]][0-9][0-9]?\/[0-9][0-9]?\/[0-9][0-9]?,[[:blank:]][1-2]?[0-9]:[0-6][0-9][[:blank:]][AP]M/' file

Если совпадение одной (или нескольких )цифр достаточно (Не понимаю, почему нет ), вы можете использовать более короткое регулярное выражение:

awk '/@ [0-9]+\/[0-9]+\/[0-9]+, [1-2]?[0-9]:[0-6][0-9] [AP]M/' file

И вы можете добавить start ^и end $, чтобы при необходимости сделать регулярное выражение более строгим.

Я не использую matchдля такого простого сопоставления строки, но то же самое регулярное выражение прекрасно работает с этой функцией.

1
28.01.2020, 05:08
  • почему строгое соответствие/\W(не -словесному символу )перед @? как в вашем текстовом файле @находится в начале строки
  • нет необходимости экранировать символы, так как \@, \,,:(они не являются специальными символами)
  • вызов match()является излишним, если нужно только сопоставить шаблон

$ awk '/^@ [0-9]{1,2}\/[0-9]{1,2}\/[0-9]{1,2}, [0-9]{1,2}:[0-9]{2} [AP]M/' file
@ 1/7/18, 4:21 PM
@ 1/7/18, 4:22 PM
@ 1/7/18, 6:12 PM
@ 1/7/18, 8:56 PM
@ 1/7/18, 9:36 PM
@ 1/7/18, 9:46 PM
1
28.01.2020, 05:08

Теги

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