Просто:
grep -x '[[:alnum:]|]*'
То есть любая последовательность из 0 или более выпусков или |
. Здесь вам не нужны расширенные(-E
)регулярные выражения. Этот синтаксис действителен как в базовых, так и в расширенных регулярных выражениях (, а также в PCRE и большинстве других регулярных выражений, единственное, что может не поддерживаться в некоторых, это [:alnum:]
класс символов POSIX ).
Единственное, что отсутствовало у вас, — это опция -x
, чтобы заставить регулярное выражение сопоставляться со всей строкой, а не сопоставляться внутри строки. Вложение регулярных выражений было излишним. Вам это понадобится, если вы хотите, чтобы |
поля с разделителями были не -пустыми:
grep -xE '[[:alnum:]]+(\|[[:alnum:]]+)*'
Это также можно сделать с помощью базовых RE, хотя и менее разборчиво:
grep -x '[[:alnum:]]\{1,\}\(|[[:alnum:]]\{1,\}\)*'
Убедитесь, что расширения Samba для Unix включены. Например,:
[global]
unix extensions = yes
⋮
в противном случае протокол поддерживает только разрешения Windows (ACL ), а не разрешения Unix. (Я думал, что да по умолчанию, но, возможно, дистрибутив изменил это ).
Точно так же монтировка также должна их включить, там есть опция unix
. Кроме того, вы можете установить guest ok = no
, чтобы убедиться, что вы действительно аутентифицируетесь, а не случайно получаете гостя.