Я предлагаю sed
решение, но ради полноты,
awk 'NR >= 57890000 && NR <= 57890010' /path/to/file
Отключать после последней строки:
awk 'NR < 57890000 { next } { print } NR == 57890010 { exit }' /path/to/file
Тест скорости (здесь на macOS, YMMV в других системах):
seq 100000000 > test.in
real
время, как сообщается bash
встроенный time
4.373 4.418 4.395 tail -n+50000000 test.in | head -n10
5.210 5.179 6.181 sed -n '50000000,50000010p;57890010q' test.in
5.525 5.475 5.488 head -n50000010 test.in | tail -n10
8.497 8.352 8.438 sed -n '50000000,50000010p' test.in
22.826 23.154 23.195 tail -n50000001 test.in | head -n10
25.694 25.908 27.638 ed -s test.in <<<"50000000,50000010p"
31.348 28.140 30.574 awk 'NR<57890000{next}1;NR==57890010{exit}' test.in
51.359 50.919 51.127 awk 'NR >= 57890000 && NR <= 57890010' test.in
Это ни в коем случае не точные сравнительные тесты, но различие является четким и достаточно повторяемое* для предоставления хорошего чувства относительной скорости каждой из этих команд.
*: Кроме между первыми двумя, sed -n p;q
и head|tail
, которые, кажется, по существу то же.
Какой набор символов у Вас есть свой набор терминала к использованию? При тихом использовании ASCII Вы не имеете символы рисования поля двойной строки в наличии для Вас. При использовании UTF-8 можно отослать последовательность символов UTF-8 для этих символов. Я верю printf("╢")
будет работать, если Вы компилятор примете UTF-8 в исходном коде, например. gcc
с -finput-charset=UTF-8
.
В некоторых комментариях в качестве возможного решения предлагался ncurses. У этого есть свои плюсы и минусы:
).Пример OP печатает фрагмент одной строки, и обсуждение не дало никаких подсказок, было ли это типичным использованием или частью чего-то более сложного. ncurses принимает UTF- 8 строк, и отслеживает текущую позицию, но не придает особого значения символам рисования прямоугольников , а не в своем репертуаре. Начиная с 2009 (после выпуска 5.7), в нем есть символы для рисования с двумя и толстыми линиями, но это далеко не полный набор графических изображений Unicode, поскольку они не смешанные ]. Вот несколько скриншотов из тестовой программы ncurses, на которых показаны предопределенные символы, которые поддерживает ncurses:
echo $LANG
)? – wingedsubmariner 07.09.2013, 19:44