LINUX.ORG.RU

Grep поиск строк - Bash

 ,


0

1

Есть такая задача для grep: Есть файл со строками которые нужно искать baza.txt , каждая запрос с новой строчки. Есть папка /cms по которой нужно искать в содержимом всех файлов. В конце все найденные строчки сохранить в файл.

Посоветовали запрос: grep -a -r -f baza.txt /cms>> output.txt

Но он не работает.

В итоге дошел до запроса: fgrep -r -i -n -f baza.txt /var/cms >> output.txt

Все заработало, но почему-то берет только 1 строку и ищет, а не все.

Что не правильно?


неправильно то, что ты пытаешься решить своё домашнее задание чужими силами

UPD: а, нет, тут случай немного другой, но суть в общем-то аналогичная

reprimand ★★★★★
()
Последнее исправление: reprimand (всего исправлений: 1)
Ответ на: комментарий от reprimand

Не правильно флудить в темах, на которые даже не знаешь как ответить, кроме как попытаться поумничать. Мне кажется, или в вашем сообщении написан бред? Какие чужие силы? Какое дз? Какой случай? Подсказать что я не так ввел, или чего не хватает?

От ваших флуд постов, складывается впечатление, что я попросил за меня заново написать утилиту grep, так сказать с 0.

P.s. я пролистал ваши сообщения, складывается ощущение, что вы слегка перепутали форумы. Вам дорога на форумы домохозяек, и лучше спускаться в раздел: «клиника».

Аривидерчи!

Denta
() автор топика
Ответ на: комментарий от Denta

Судя по размеру поста бахнуло сильно. Мммм :)

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

А теперь серьезно. Совет на будущее - подтяни русский.

reprimand ★★★★★
()
Ответ на: комментарий от Denta

на которые даже не знаешь как ответить

тут каждый первый знает, но помогать тупым халявщикам желания нет

anonymous
()
Ответ на: комментарий от anonymous

Ппц, зря только зарегистрировался. Зазнающиеся умники, которым не хватает 50 рублей на пирожок в колледже.

Удачи, больше не ногой в этот бомже-стан.

Denta
() автор топика

Всё правильно, должно работать, только что проверил. Сделайте синтетические тестовые данные и проверьте на них.

PS Не удивляйтесь наездам по поводу домашних заданий, тут реально утомляют деятели, копипастящие на ЛОР задачки из своего учебника, толпы их. Из каждой щели лезет школьник, просящий зачитать ему man ls.

legolegs ★★★★★
()

Если вы ещё не ушли: проверьте, какие переводы строк в данных и в файле запросов.

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

Спасибо за ответ. Смотрите как получается у меня... Для тестирования в файл baza.txt я добавил 6 строк. В папке cms я создал 5файлов. И в каждый из них добавил лишние строки, а так же 5 из 6 строк файла baza.txt.

В конечный файл output.txt выводится только 1 строка из baza.txt, хранимая в нескольких категориях.

Вот пример: Baza.txt: limpopo php zend obfuscator centos debian

Файлы с папки cms: 1.txt: Russia obfuscator 2.txt: zend obfuscator twitter facebook 3.txt: Debian 4.txt: Moscow habrahabr searchengines linux.org 5.txt: obfuscator sql yellow

На выходе в файле output будет выводиться только: 1.txt: obfuscator 2. txt: obfuscator 5. txt: obfuscator

И уже час сижу гадаю, почему другие поисковые запросы не выводятся в output.

Denta
() автор топика
Ответ на: комментарий от Denta

Складывается ощущение, что grep выводить только то, что первое нашел, точнее не только выводит, но и дальше только это и будет искать, игнорируя другие запросы.

Denta
() автор топика
Ответ на: комментарий от Denta

Положите baza.txt внутрь /cms и посмотрите, найдёт ли он сам себя. Повторюсь, дело, скорее всего в знаках конца строки (CRLF/LF). Попробуйте unix2dos baza.txt/

ЗЫ лор склеивает длинные строки, используйте [ code ].

legolegs ★★★★★
()
Ответ на: комментарий от legolegs

Вы были правы, дело в конце строки. Конвертирование помогло. Спасибо за совет.

Denta
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.