Добрый день коллеги.Убил вчера вечер на написание довольно таки простецкого регулярного выражения... но вот не задача...
есть вывод
$> smbclient -W dom -L box --user="byaka" 2> /dev/null|grep -e '[a-z]\{1\}\$'
CD$ Disk
HR$ Disk
C$ Disk Default share
Scan$ Disk
I$ Disk Default share
1C$ Disk
IPC$ IPC Remote IPC
ADMIN$ Disk Remote Admin
D$ Disk Default share
E$ Disk Default share
трыбуется получить только имена дисков тобишь
C$ Disk Default share
I$ Disk Default share
D$ Disk Default share
E$ Disk Default share
, для этого нужно или описать пробел или скарее всего табуляция в этом выводе или описать 1 буквенный символ от A до Z перед долларом. проблеммы в том что ни то ни то не работает (\s+ \t+)читал http://www.robelle.com/smugbook/regexpr.html, нифига не помогает.
где я обламываюсь ?
Во-первых, [a-z] соответствует буквам в нижнем регистре, а у вас они в верхнем.
Во-вторых, для описания пробельных символов можно использовать [[:space:]].Попробуйте grep -e '[[:space:]][A-Z]\$'
> Во-первых, [a-z] соответствует буквам в нижнем регистре, а у вас они в
> верхнем.
> Во-вторых, для описания пробельных символов можно использовать [[:space:]].
> Попробуйте grep -e '[[:space:]][A-Z]\$'оно! На самом деле пробовал [:space:], однако нужно было в двойных квадратных скобках его вписать =)
Спасибо =)
А можно было просто матчить пробел с табом в [ ]. Чтобы ввести таб - Ctrl+V, Tab.
> А можно было просто матчить пробел с табом в [ ].Можно.
> Чтобы ввести таб - Ctrl+V, Tab.
Мне кажется, проще было бы -- [ \t]
1. awk '/Default share/' ;-)
2. awk '$1 ~ /^[A-Z]\$/'
> 1. awk '/Default share/' ;-)
> 2. awk '$1 ~ /^[A-Z]\$/'на русских форточках сие "Ресурс по умолчанию"или хз как там, поэтому 1. не проканает
по 2. не с буквы начинается строка =) вывод smbclient отформатирован
upd
Sharename Type Comment
--------- ---- -------
HP1280 Printer HP1280
IPC$ IPC Удаленный IPC
D$ Disk Стандартный общий ресурс
print$ Disk Драйверы принтеров
upload Disk
E Disk
ADMIN$ Disk Удаленный Admin
C$ Disk Стандартный общий ресурс
> трыбуется получить только имена дисков тобишьman smbclient
-g|--grepable
This parameter provides combined with -L easy parseable output that allows
processing with utilities such as grep and cut.# smbclient -g -W dom -L box --user="byaka" 2>&1 | grep Disk
>> трыбуется получить только имена дисков тобишь
> man smbclient
>
> -g|--grepable
> This parameter provides combined with -L easy parseable
> output that allows
> processing with utilities such as grep and cut.
>
> # smbclient -g -W dom -L box --user="byaka" 2>&1 | grep DiskБлагодарю!, идеальный вариант.
p.s.
честно, читал, пропустил =)
>> трыбуется получить только имена дисков тобишь
> man smbclient
>
> -g|--grepable
> This parameter provides combined with -L easy parseable
> output that allows
> processing with utilities such as grep and cut.
>
> # smbclient -g -W dom -L box --user="byaka" 2>&1 | grep Diskтогда уж
smbclient -g -W dom -L box --user="byaka" 2>&1 | awk -F '|' '{print $2}'| egrep -i '^[a-z]{1}(\$|$)'
>[оверквотинг удален]
>>
>> -g|--grepable
>> This parameter provides combined with -L easy parseable
>> output that allows
>> processing with utilities such as grep and cut.
>>
>> # smbclient -g -W dom -L box --user="byaka" 2>&1 | grep Disk
> тогда уж
> smbclient -g -W dom -L box --user="byaka" 2>&1 | awk -F '|'
> '{print $2}'| egrep -i '^[a-z]{1}(\$|$)'После 2>&1 | каждый извращается как нужно :)