странности fgrep (fgrep не работает)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

wlad_O
Сообщения: 44

странности fgrep

Сообщение wlad_O »

Имеется скрипт sns с содержанием:
#! /bin/bash
sensors | fgrep -f ./bin/sens
где sensors - команда, возвращающая список параметров железа,
а sens - файл, где указаны первые слова строк этого списка, но не всех,
а тех, которые меня интересуют.
Все прекрасно работало до какого-то момента. Теперь по команде sns
мне выводится снова весь список, т.е. вместо
sensors | fgrep -f ./bin/sens
срабатывает просто sensors.
Делаю вывод, что fgrep не работает. При подстановке grep -F вместо fgrep
вообще ничего не происходит.
Если понятно, что я написал, прокомментируйте, пожалуйста, ситуевину.
С уважением, Влад
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: странности fgrep

Сообщение sash-kan »

вероятнее всего, вы слишком «широкий» regexp употребили в /bin/sens.

p.s. кстати, каталог /bin — очень неподходящее место для хранения подобной информации.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
sgfault
Сообщения: 586
Статус: -

Re: странности fgrep

Сообщение sgfault »

wlad_O писал(а):
09.11.2010 23:03
Имеется скрипт sns с содержанием:
#! /bin/bash
sensors | fgrep -f ./bin/sens
где sensors - команда, возвращающая список параметров железа,
а sens - файл, где указаны первые слова строк этого списка, но не всех,
а тех, которые меня интересуют.
Все прекрасно работало до какого-то момента. Теперь по команде sns
мне выводится снова весь список, т.е. вместо
sensors | fgrep -f ./bin/sens
срабатывает просто sensors.
Делаю вывод, что fgrep не работает. При подстановке grep -F вместо fgrep
вообще ничего не происходит.
Если понятно, что я написал, прокомментируйте, пожалуйста, ситуевину.

Попробуйте
- запустить только с одним regexp-ом,
- передать regexp через командную строку,
- посмотрите возвращаемое значение,
- попробуйте то же самое, но просто с grep (и даже с sed).
И, наконец, покажите сами файлы -)
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: странности fgrep

Сообщение watashiwa_daredeska »

Господа, какие, нафиг, регекспы? Это ж fgrep. :)

wlad_O писал(а):
09.11.2010 23:03
Если понятно, что я написал, прокомментируйте, пожалуйста, ситуевину.
Shit happens. Как уже посоветовали, проверьте работу fgrep на элементарных примерах:

localhost

$ echo 1 | fgrep 1 1 $ echo 1 | fgrep 2 $ echo 1 | fgrep -f <(echo 1) 1 $ echo 1 | fgrep -f <(echo 2)



Можно проверить, что на самом деле пытается и исполняет bash. Для этого нужно заменить shebang на:#!/bin/bash -x
Спасибо сказали:
wlad_O
Сообщения: 44

Re: странности fgrep

Сообщение wlad_O »

watashiwa_daredeska писал(а):
10.11.2010 11:17
Господа, какие, нафиг, регекспы? Это ж fgrep. :)

Shit happens. Как уже посоветовали, проверьте работу fgrep на элементарных примерах:
Можно проверить, что на самом деле пытается и исполняет bash. Для этого нужно заменить shebang на:#!/bin/bash -x


Проверил, все как в Вашем примере. До этого проверял немного по-другому, тоже работало.
Даю команду sns - Shit happens, как Вы выражаетесь.

Заменил shebang - не помогает. Мало того, в своем файле sens убрал все и оставил всего одну строку и перевод строки. Не помогло:(.
С уважением, Влад
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: странности fgrep

Сообщение sash-kan »

watashiwa_darede... писал(а):
10.11.2010 11:17
Господа, какие, нафиг, регекспы? Это ж fgrep.
да хоть мумиями их обзови. суть-то не меняется:

Shell

$ hd reg1 00000000 61 62 63 0a 0a |abc..| 00000005 $ hd reg2 00000000 61 62 63 0a 0a 0a |abc...| 00000006 $ echo def | fgrep -f reg1 $ echo def | fgrep -f reg2 def $ fgrep -V GNU grep 2.5.3 Copyright © 1988, 1992-2002, 2004, 2005 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. $


собачья ямка здесь:
wlad_O писал(а):
10.11.2010 18:51
и перевод строки
?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
wlad_O
Сообщения: 44

Re: странности fgrep

Сообщение wlad_O »

sash-kan писал(а):
10.11.2010 21:35
собачья ямка здесь:
wlad_O писал(а):
10.11.2010 18:51
и перевод строки
?


Что непонятного? Написал строку, нажал Enter. Для упрощения создал файл всего из одной строки.
Тот же файл без перевода строки тоже не работает.
С уважением, Влад
Спасибо сказали:
wlad_O
Сообщения: 44

Re: странности fgrep

Сообщение wlad_O »

Итак.
Я бы мог сейчас сообщить, что вопрос закрыт. Но!
Я решил проблему так. Вместо файла, хранящего строки для fgrep под названием sens,
я создал новый файл под другим названием и вписал три нужных мне строки.
Заменил в скрипте sns название на новое. И вуаля! Скрипт снова заработал:).
Почему вопрос не закрыт? Да хотелось бы знать причину аномалии.
С уважением, Влад
Спасибо сказали:
wlad_O
Сообщения: 44

Re: странности fgrep

Сообщение wlad_O »

Всем спасибо!!!
С уважением, Влад
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: странности fgrep

Сообщение sash-kan »

wlad_O писал(а):
10.11.2010 22:46
Да хотелось бы знать причину аномалии.
cr+lf? windows-софтом файлик не редактировали? в каком редакторе сейчас редактируете?

да и вообще — просто посмотрите содержимое hexdump-ом:
$ hexdump -C <файл>
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
wlad_O
Сообщения: 44

Re: странности fgrep

Сообщение wlad_O »

sash-kan писал(а):
11.11.2010 01:23
wlad_O писал(а):
10.11.2010 22:46
Да хотелось бы знать причину аномалии.
cr+lf? windows-софтом файлик не редактировали? в каком редакторе сейчас редактируете?

да и вообще — просто посмотрите содержимое hexdump-ом:
$ hexdump -C <файл>


Редактирую иногда в nano, но чаще в KWrite, мне в нем удобнее. Мысль редактировать
в винде, чтобы потом использовать в линуксе, как абсолютно бредовая не могла прийти
в мою далеко не гениальную голову. А как Вам такое подумалось?
Насчет hexdump. Поздно пить боржоми. О каком файле речь? Если о скрипте, то с ним
все в порядке, он работает, см. выше. Если о файле, где хранятся строки для fgrep,
то я его удалил (см. выше). Может быть погорячился. И огромное спасибо за участие!
С уважением, Влад
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: странности fgrep

Сообщение sash-kan »

wlad_O писал(а):
11.11.2010 22:19
А как Вам такое подумалось?
я уж не первый год почитываю этот форум. так что знаю — всякое бывает.
wlad_O писал(а):
11.11.2010 22:19
И огромное спасибо за участие!
не за что. заходите к нам на огонёк.
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали: