The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Удивительная GREP"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Удивительная GREP"
Сообщение от Bootmen emailИскать по авторуВ закладки on 11-Апр-03, 22:19  (MSK)
Меня странно подвела известная утилитка grep
Оказывается она не видит и пропускает строки начинающиеся
с символа ^@
Нигде в литературе такого не встречал-только пишут что grep универсальная
и пользуйтесь ей в поиске и по текствовым и в бинарных файлах. (ну и дела)
Теперь приходится подстраховыватся таким способом:
cat -v file | grep "patern"


  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Удивительная GREP"
Сообщение от jk Искать по авторуВ закладки on 12-Апр-03, 17:11  (MSK)
grep ^@ означает что нужно найти строку первый символ которой @
а не найти строки с сочетанием ^@
символ ^ означает начало строки
чтобы найти ^@ нужно юзать grep [^@] - AFAIK


  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Удивительная GREP"
Сообщение от Bootmen emailИскать по авторуВ закладки on 15-Апр-03, 03:42  (MSK)
>grep ^@ означает что нужно найти строку первый символ которой @
>а не найти строки с сочетанием ^@
>символ ^ означает начало строки
>чтобы найти ^@ нужно юзать grep [^@] - AFAIK

Я наверное неправильно выразился:
^@ это один управляющий символ а не два - то есть \000 или NULL.

Есть  к примеру такой файл file1 :

llsafdjk
@^@^@^@^ABCD^@^@
nnnn

Мне нужно удостоверится что в нем содержится строки с ABCD
Делаю скрипт:
:
#
grep "ABCD" file1 2> /dev/null || {echo "ABCD в $0 не найдено!"; exit 0}
echo " Все нормально!" ; exit 0
#

Результат:
# ABCD в file1 не найдено!
#
Если я сделаю так:
:
#
cat -v file1 | grep "ABCD"  2> /dev/null || {
echo "ABCD в $0 не найдено!"; exit 0
}
echo " Все нормально!" ; exit 0
#
Результат будет:
# Все нормально!

Нигде я в описаниях и ман я такого случая не читал и в итоге немного
прогорел.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "Удивительная GREP"
Сообщение от jk Искать по авторуВ закладки on 15-Апр-03, 12:08  (MSK)
#!/bin/bash
#first parameter is a filename where expression
#which stored in second parameter must be searched
cat $1|grep $2 > /dev/null
if [ $? -eq 0 ];then
    echo "$2 occured in $1"
else
    echo "no $2 occured in $1"
fi
  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "Удивительная GREP"
Сообщение от Bootmen emailИскать по авторуВ закладки on 16-Апр-03, 13:42  (MSK)
>#!/bin/bash
>#first parameter is a filename where expression
>#which stored in second parameter must be searched
>cat $1|grep $2 > /dev/null
>if [ $? -eq 0 ];then
>    echo "$2 occured in $1"
>else
>    echo "no $2 occured in $1"
>fi

Странно,  но вышенаписанное есть тоько копия моего скрипта (но в bsh)
Я то вобщето хотел сообщить о непонятном поведении утилитки GREP
когда она встречает в тексте управляющий символ ^@ (NULL)..

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "Удивительная GREP"
Сообщение от jk Искать по авторуВ закладки on 16-Апр-03, 19:22  (MSK)
не понял я чего-то
у меня этот скрипт работал без всяких глюков
  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "Удивительная GREP"
Сообщение от Bootmen Искать по авторуВ закладки on 21-Апр-03, 18:15  (MSK)
>не понял я чего-то
>у меня этот скрипт работал без всяких глюков

Дорогой мой оппонент!
Речь не идет о примитивных шелл скриптах
Я всего лишь хотел предупредить о поведении утилиты GREP
Создайте файл в котором строки начинаются с управляющего
символа ^@
И утилилита GREP ничего!
НИЧЕГО! в в этом файле не найдет.
Что бы вы ей не задавали а аргументах.
Наконец вам пример:
^@ abcd
grep abcd file
#
Не видит она строки с начинающиеся с ^@
Это один знак ^@
В VI ПРекрасно видно..

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "Удивительная GREP"
Сообщение от Bootmen Искать по авторуВ закладки on 21-Апр-03, 18:32  (MSK)
abcd
>grep abcd file
>#
>Не видит она строки с начинающиеся с ^@
>Это один знак ^@
>В VI ПРекрасно видно..


Я к чему это говорю-
Некоторые хитро@опые программеры создают файлы в своих коммерческих
пакетах стабильной длины.
И забивают их символами ^@
А мне то тоже хоца там порытся...

  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "Удивительная GREP"
Сообщение от poige emailИскать по авторуВ закладки on 28-Апр-03, 06:51  (MSK)
>Меня странно подвела известная утилитка grep
>Оказывается она не видит и пропускает строки начинающиеся
>с символа ^@

Мои опыты с оной:

$cat gg
test
rest

$cat -v gg
^@test
^@rest

$od -t a gg
0000000  nul   t   e   s   t  nl nul   r   e   s   t  nl                
0000014

$grep rest gg
Binary file gg matches

$grep test gg
Binary file gg matches

$grep est gg
Binary file gg matches

$grep -a est gg
test
rest

работает как в Linux, так и во FreeBSD.

/poige
--
http://www.morning.ru/~poige/

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




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

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