вывод строки номер 100500 (без cat grep head tail)
Модераторы: /dev/random, Модераторы разделов
-
- Сообщения: 1268
- ОС: debian
вывод строки номер 100500
Ребята, есть файл очень большой. Более двух Гб. Текстовый. Нужно выдирать периодически из него строку номер $NUMBER. Эта строка иногда в начале ($NUMBER<100500), иногда в середине(100500<$NUMBER<999999), иногда в конце(999999<$NUMBER. Можно делать head -n $NUMBER file|tail -n 1, но это мне кажется корявым исполнением, к тому же еще и длительным процессом. Как делают обычно? Что-то не нагуглил...
-
- Администратор
- Сообщения: 5405
- ОС: Gentoo
-
- Сообщения: 1268
- ОС: debian
Re: вывод строки номер 100500
а что такое p и q? Я в синтаксис не врубаюсь
man не помог

-
- Администратор
- Сообщения: 5405
- ОС: Gentoo
Re: вывод строки номер 100500
"p" - вывести, "q" - выйти (чтобы не читать остаток файла). Опция "-n" блокирует автоматический вывод, чтобы выводилось только то, что указано явно.
Учтите, что строки с первой по нужную всё равно будут прочитаны. Для простого текстового файла это неизбежно, т.к. неизвестно, с какого байта начинается нужная строка. Если вам нужно быстрее, то используйте более хитрый формат.
Учтите, что строки с первой по нужную всё равно будут прочитаны. Для простого текстового файла это неизбежно, т.к. неизвестно, с какого байта начинается нужная строка. Если вам нужно быстрее, то используйте более хитрый формат.
Спасибо сказали:
-
- Сообщения: 3321
- Статус: Красный глаз тролля
- ОС: ArchLinux
Re: вывод строки номер 100500
Советую завести отдельный — индексный — файл, куда скидывать позиции начала строк, скажем, с шагом в 100 или 1000. Потом проще будет вывести строчку N: делаем файлу lseek на нужную позицию, а потом ищем нужную строчку.
Будет намного шустрей.
Будет намного шустрей.
RTFM
-------
KOI8-R - патриотичная кодировка
-------
KOI8-R - патриотичная кодировка

Спасибо сказали: