bzgrep -H pattern file.bz2 не дает имени файла, но "стандартный ввод"

908
Washuu

Я думал -H всегда должен печатать имя файла перед соответствующей строкой. это верно для grep, но не для bzgrep:

$ grep -H pattern file1  file1: data pattern data  $ bzgrep -H pattern file2.bz2  (standard input): data pattern data 

Есть ли обходной путь для этого? Мне нужно grep сотни файлов bz2, я не могу распаковать их все перед поиском ...

1
Попробуйте указать несколько файлов в командной строке golimar 10 лет назад 0
командная строка будет слишком коротка для этого. Есть сотни файлов для поиска. Я буду использовать bzgrep в цикле 'for', где переменная будет именем файла, взятым из списка, поскольку файлы находятся в разных каталогах. Washuu 10 лет назад 0
Затем создайте пустой файл и grep каждый раз как файл bz2, так и пустой файл. golimar 10 лет назад 0
Это что-то вроде обходного пути, спасибо. Единственным недостатком является то, что имя файла будет в отдельной строке, что необходимо правильно проанализировать. Интересно, однако, почему такая ошибка осталась незамеченной. Возможно, у меня слишком старая версия bzgrep? Я постараюсь проверить это на новейшем CentOS. Washuu 10 лет назад 0

2 ответа на вопрос

0
barbaz

There is (to my knowledge) no version of grep that internally supports gzip / bzip2. Instead, there exist shell scripts such as bzgrep and zgrep, that essentially call the gunzip / bunzip2 binaries and feed the output into grep via stdin. Therefore, the -H flag cannot work as expected when you don't invoke grep directly.

0
Washuu

I looked at bzgrep. It was indeed bash script file. The modification of the script in order to fix the issue was quite simple, so I wondered if someone else corrected it in newer version of bzgrep. I found out, it is corrected on Ubuntu and Debian, but not on CentOS.

If someone stumbles on the same issue - just log in to some newer system, and copy the bzgrep shell script. It's the easiest fix.

Не могли бы вы опубликовать необходимые изменения в своем ответе? Dennis 10 лет назад 0

Похожие вопросы