LINUX.ORG.RU

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

не пойдет... у меня файлы несколько гигов, а мне прочитать по несколько строк надо... cat же выводит весь файл - очень долго!

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

Если ты прав, то используй команду head, чтобы отрезать все после.

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

Если файл имеет строки произвольной длины то для того чтоб определить байт где начинается 99 строка в любом случае придётся читать и анализировать весь файл до неё.
Чтоб не читать файл после конца нужной области:

perl -ne 'print if 81..90; exit if 90..90'<file.txt

(perl не знаю, за кривой код не пинать)

Если длина строк в байтах фиксирована то можно вырезать нужный кусок с помощью dd

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

А интересно, а можно ли к примеру вывести все до конца файла начиная со строки 2182? что это за конструкция 90..90? Можно ли там как-то применить > < и к чему?

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

А не. sed отпадает.

$ time head -n181 access_log.15 | tail -n$((181-99+1))>/dev/null 2>&1
real    0m0.003s
user    0m0.008s
sys     0m0.000s
$ ls -lah access_log.15
-rw-r--r--  1 root root 946M 2006-12-20 00:01 access_log.15

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

А интересно, а можно ли к примеру вывести все до конца файла начиная со строки 2182?

perl -ne 'print if !(1..2181)'<file.txt

Но от тормозов при анализе строк до 2181 это естественно не спасёт

А лучше пусть ответит кто-нибудь кто знает перл. Я конструкцию m..n в булевском смысле впервые увидел в этом топике

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

sed -n '99,181p; 182q' big_file
1. -n нет output
2. с 99 по 181 выдавать строки на stdout
3. 182 строка quit (не читать файл до конца)

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

$ time head -n10181 access_log | tail -n10000 >/dev/null

real    0m0.025s
user    0m0.012s
sys     0m0.013s

$ time sed -n '10000,10181p; 10182q' access_log >/dev/null

real    0m0.015s
user    0m0.012s
sys     0m0.003s

$ ls -lh access_log
[skip]     664M  access_log

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