The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"if по regexp, или как это можно сделать"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"if по regexp, или как это можно сделать"  
Сообщение от Arpo email(ok) on 09-Окт-07, 14:20 
Доброго времени суток.

Знаю что проблема должна решаться очень легко, но не могу сосредоточиться.

Вообщем вот что нужно.Есть фаил типа

(15GB) d151: is Submirror of d150: (15GB) c1t2d0s3;
d152: is Submirror of d150: (15GB) c1t3d0s3;
(516MB) d141: is Submirror of d140: (516MB) c1t0d0s4;
d142: is Submirror of d140: (516MB) c1t1d0s4;
(16GB) d111: is Submirror of d110: (16GB) c1t0d0s1;
d112: is Submirror of d110: (16GB) c1t1d0s1;
(51GB) d101: is Submirror of d100: (51GB) c1t0d0s0;
d102: is Submirror of d100: (51GB) c1t1d0s0;
(52GB) d161: is Submirror of d160: (52GB) c1t2d0s4;
d162: is Submirror of d160: (52GB) c1t3d0s4;
d170: is Concat-Stripe (136GB) c1t4d0s0 c1t5d0s0

Как вы заметили некоторые строки начинаються со скобок, а осталные нет. Так вот как задат такое условие.
if [строка начинается со скобок с чем то внутри ]
then
      echo "Скобки"
else
      echo "Скобок нет"
fi

пытался сделат это примерно так.
while read TMP
do
BEG=`echo $TMP|awk '{print $1}'`
        if [ "$BEG" = "(*)" ]
        then
                echo "$BEG"
        fi
done<file.tmp

но помоему это не правилно.
Помогите плиз...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "if по regexp, или как это можно сделать"  
Сообщение от vic (??) on 09-Окт-07, 15:46 
>[оверквотинг удален]
>        if [ "$BEG" =
>"(*)" ]
>        then
>            
>    echo "$BEG"
>        fi
>done<file.tmp
>
>но помоему это не правилно.
>Помогите плиз...

cat file | egrep '^\(.*\)'

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "if по regexp, или как это можно сделать"  
Сообщение от Arpo email(ok) on 09-Окт-07, 16:44 
>[оверквотинг удален]
>>        then
>>            
>>    echo "$BEG"
>>        fi
>>done<file.tmp
>>
>>но помоему это не правилно.
>>Помогите плиз...
>
>cat file | egrep '^\(.*\)'

это ясно , как это в условие засунуть??

З.Ы. Я вроде понятно проблему описал...

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "if по regexp, или как это можно сделать"  
Сообщение от phpcoder email(??) on 10-Окт-07, 10:17 
>[оверквотинг удален]
>>>        fi
>>>done<file.tmp
>>>
>>>но помоему это не правилно.
>>>Помогите плиз...
>>
>>cat file | egrep '^\(.*\)'
>
>это ясно , как это в условие засунуть??
>З.Ы. Я вроде понятно проблему описал...

А самому сделать?

P.S. Хотел переделать пример vic'а, но кажется, sed здесь самое оно:

[c0der@rock ~]$ sed -n '/^(.*).*/p' testo
(15GB) d151: is Submirror of d150: (15GB) c1t2d0s3;
(516MB) d141: is Submirror of d140: (516MB) c1t0d0s4;
(16GB) d111: is Submirror of d110: (16GB) c1t0d0s1;
(51GB) d101: is Submirror of d100: (51GB) c1t0d0s0;
(52GB) d161: is Submirror of d160: (52GB) c1t2d0s4;
[c0der@rock ~]$


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "if по regexp, или как это можно сделать"  
Сообщение от Arpo email(ok) on 10-Окт-07, 10:40 
>[оверквотинг удален]
>
>[c0der@rock ~]$ sed -n '/^(.*).*/p' testo
>(15GB) d151: is Submirror of d150: (15GB) c1t2d0s3;
>(516MB) d141: is Submirror of d140: (516MB) c1t0d0s4;
>(16GB) d111: is Submirror of d110: (16GB) c1t0d0s1;
>(51GB) d101: is Submirror of d100: (51GB) c1t0d0s0;
>(52GB) d161: is Submirror of d160: (52GB) c1t2d0s4;
>[c0der@rock ~]$
>
>

Problem is solved, Thank you all.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "if по regexp, или как это можно сделать"  
Сообщение от vic (??) on 10-Окт-07, 13:15 
>>
>>cat file | egrep '^\(.*\)'
>
>это ясно , как это в условие засунуть??
>

прямо так и запихивать

while read TMP
do
  [ `echo $TMP | egrep '^\(.*\)'` ] && echo "found" && echo "not found"
done < file.tmp

>З.Ы. Я вроде понятно проблему описал...

PS да я тож вроде понятно ответил =)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "if по regexp, или как это можно сделать"  
Сообщение от vic (??) on 10-Окт-07, 13:19 
Ы, очепятолсо в условии, прально тах:
[ `echo $TMP | egrep '^\(.*\)'` ] && echo "found" || echo "not found"


=)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "if по regexp, или как это можно сделать"  
Сообщение от angra (ok) on 09-Окт-07, 17:50 
используйте встроенное в bash вырезание подстрок
while read TMP;do if [ ${TMP:0:1} == "(" ]; then echo "yes"; else echo "No"; fi;done
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "if по regexp, или как это можно сделать"  
Сообщение от Arpo email(ok) on 10-Окт-07, 08:36 
>используйте встроенное в bash вырезание подстрок
>while read TMP;do if [ ${TMP:0:1} == "(" ]; then echo "yes";
>else echo "No"; fi;done

Хмм.. Интересно... Спасибо бальшое.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "if по regexp, или как это можно сделать"  
Сообщение от anonymous (??) on 13-Окт-07, 15:32 
хм, проверка строчки:
"some cmd magic" | grep -q '^('
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру