URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9093
[ Назад ]

Исходное сообщение
"grep -e описание пробела или табуляции в регулярном выражении"

Отправлено tkpiuk , 14-Апр-11 07:39 
Добрый день коллеги.

Убил вчера вечер на написание довольно таки простецкого регулярного выражения... но вот не задача...

есть вывод


$> 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, нифига не помогает.

где я обламываюсь ?


Содержание

Сообщения в этом обсуждении
"grep -e описание пробела или табуляции в регулярном выражении"
Отправлено phpcoder , 14-Апр-11 08:00 
Во-первых, [a-z] соответствует буквам в нижнем регистре, а у вас они в верхнем.
Во-вторых, для описания пробельных символов можно использовать [[:space:]].

Попробуйте grep -e '[[:space:]][A-Z]\$'


"grep -e описание пробела или табуляции в регулярном выражении"
Отправлено tkpiuk , 14-Апр-11 08:18 
> Во-первых, [a-z] соответствует буквам в нижнем регистре, а у вас они в
> верхнем.
> Во-вторых, для описания пробельных символов можно использовать [[:space:]].
> Попробуйте grep -e '[[:space:]][A-Z]\$'

оно! На самом деле пробовал [:space:], однако нужно было в двойных квадратных скобках его вписать =)

Спасибо =)


"grep -e описание пробела или табуляции в регулярном выражении"
Отправлено Аноним , 14-Апр-11 11:45 
А можно было просто матчить пробел с табом в [  ]. Чтобы ввести таб - Ctrl+V, Tab.

"grep -e описание пробела или табуляции в регулярном выражении"
Отправлено phpcoder , 14-Апр-11 11:46 
> А можно было просто матчить пробел с табом в [  ].

Можно.

> Чтобы ввести таб - Ctrl+V, Tab.

Мне кажется, проще было бы -- [ \t]


"grep -e описание пробела или табуляции в регулярном выражении"
Отправлено meantraitor , 14-Апр-11 14:20 
1. awk '/Default share/'    ;-)
2. awk '$1 ~ /^[A-Z]\$/'

"grep -e описание пробела или табуляции в регулярном выражении"
Отправлено tkpiuk , 15-Апр-11 11:49 
> 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      Стандартный общий ресурс


"grep -e описание пробела или табуляции в регулярном выражении"
Отправлено pavlinux , 15-Апр-11 04:24 
> трыбуется получить только имена дисков тобишь

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


"grep -e описание пробела или табуляции в регулярном выражении"
Отправлено tkpiuk , 15-Апр-11 11:52 
>> трыбуется получить только имена дисков тобишь
> 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.
честно, читал, пропустил =)


"grep -e описание пробела или табуляции в регулярном выражении"
Отправлено tkpiuk , 15-Апр-11 12:00 
>> трыбуется получить только имена дисков тобишь
> 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}(\$|$)'


"grep -e описание пробела или табуляции в регулярном выражении"
Отправлено pavlinux , 15-Апр-11 13:29 
>[оверквотинг удален]
>>
 
>> -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 |  каждый извращается как нужно :)