Главная страница


ru.unix

 
 - RU.UNIX ----------------------------------------------------------------------
 From : Serge                                2:5020/400     08 Jun 2005  09:43:05
 To : Eugene Grosbein
 Subject : Re: поиск
 -------------------------------------------------------------------------------- 
 
 Когда часы показывали Wed, 08 Jun 2005 11:43:19 +0400
 "Eugene Grosbein", a.k.a. "EG", писал(а) о "поиск":
 
 EG> Привет!
 EG> 
 EG> Есть текстовый файл file, в котором перечислены IP-адреса, по одному
 EG> в строке, а каждая вторая строка несет в себе атрибут IP, стоящего
 EG> выше
 EG> 
 EG> 1.1.1.111
 EG> attrib1
 EG> 1.111.1.1
 EG> attrib2
 EG> 
 EG> Из шелла надо узнать, есть ли в нем адрес 1.1.1.1, и если есть,
 EG> получить атрибут. Атрибуты начинаются с буквы.
 EG> 
 EG> Так не получается:
 EG> 
 EG> if fgrep -q $ip file; then
 EG>   echo Есть: fgrep -A 1 $ip file | tail -1
 EG> fi
 
 grep берёт аргумент в виде perl-шаблона. Д/з: узнать, что
 означает символ "." в таком шаблоне, и как всё же передать
 ему именно "точку".
 
 EG> Ложное срабатывание на первой строчке.
 EG> 
 EG> Так тоже не получается:
 EG> 
 EG> if grep -q "^$ip$" file; then
 EG>   echo Есть: grep -A 1 "^$ip$" file | tail -1
 EG> fi
 EG> 
 EG> Ложное срабатывание на второй строчке.
 EG> 
 EG> Как проще сделать такое?
 
 Обработать предварительно $ip нужным образом.
 Где-то, самое удобное, sed-ом:
 
 $ ip=1.1.1.1; echo -e '1.1.1.1\nasdf\n1.11.1.11\njkl;'\
 |grep -A1 "^`echo $ip|sed 's~\.~\\\.~g'`$"|tail -n 1
 
 asdf
 
 С другой стороны, это не совсем удобно, городить такую
 конструкцию на sh+grep+sed+tail, когда можно обойтись
 одним awk или реализовать поиск самостоятельно циклом
 в shell.
 --- ifmail v.2.15dev5.3
  * Origin: Member ID not found! (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: поиск   Serge   08 Jun 2005 09:43:05 
Архивное /ru.unix/11846104d3f60.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional