Использование sed в сжатом файле - PullRequest
10 голосов
/ 08 августа 2011

Я написал программу для обработки файлов, и теперь ей нужно читать из заархивированного файла (разархивированный файл .gz может иметь размер до 2 ТБ),

Существует ли эквивалент для сжатых файлов, например (zcat)/ cat) или каков наилучший подход для эффективного выполнения следующих действий

    ONE=`zcat filename.gz| sed -n $counts`

$ count: счетчик для чтения (строка за строкой)

Вышеприведенный метод работает, но вполнемедленно для большого файла, так как мне нужно прочитать каждую строку и выполнить сопоставление в определенных полях.

Спасибо

РЕДАКТИРОВАТЬ

Хотя это не очень полезно, вот набор zcommands

http://www.cyberciti.biz/tips/decompress-and-expand-text-files.html

Ответы [ 2 ]

4 голосов
/ 08 августа 2011

Ну, вы можете иметь большую скорость (т.е. использовать несжатые файлы) или больше свободного места (т.е. использовать сжатые файлы и канал, который вы показали) ... извините.Использование сжатых файлов всегда будет иметь накладные расходы.

2 голосов
/ 08 августа 2011

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

Если шаблон вообще имеет какую-либо сложность, это звучит как довольно сложный проект, поскольку вам придется обрабатывать случаи, когда шаблон может быть удовлетворен сочетанием вывода из двух (или более) отдельных частей декомпрессии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...