Unix кошка, начиная с линии

49444
vonhogen

Каков наилучший способ вывода из файла, начиная с определенной строки (большое число, например, 70000). Что-то вроде:

cat --line=70000 <file> 
34

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

54
Svend

Посмотрите на хвост, точнее, это --lines = + N переключатель:

tail --lines=+100 <file> 
Вот это да. Я не знал этого даже после использования этого в Linux в течение 8 лет! Я всегда использовал Баш FN! Спасибо ! getFromLine () ' `; lineno = `expr $ lineno - $ 2`; tail -n $ lineno $ 1; } secureBadshah 15 лет назад 0
Как примечание, это не работает на Mountain Lion (Darwin Kernel Version 13.1.0). Вариант для Горного льва - `tail -n` Kaushik Ghose 10 лет назад 2
19
Chris Johnsen

Самый очевидный способ tail. Синтаксис может немного отличаться в зависимости от того, какую ОС вы используете:

tail -n +70000 

Если вы не можете добраться tailдо работы, вы можете использовать sed, но это может закончиться медленнее:

sed -pe '1,69999d' 
`tail` отлично работал в [MinGW] (http://en.wikipedia.org/wiki/MinGW) (для текстового файла объемом 600 МБ). Время выполнения составило всего несколько секунд (но входной файл уже мог находиться в файловом кеше). Peter Mortensen 8 лет назад 0
2
AlohaUnixFan

Если вместо номера строки вам нужно начать перечисление со строки, содержащей данное $phrase, попробуйте следующее.

more -1000 +/"$phrase" yourfilename | sed '1,4d' 

-1000 будет непрерывно перечислять текст до 1000 строк; Вы можете изменить это при необходимости. Команда sedотрежет первые 4 строки вывода, которые были автоматически вставлены more, содержащие пустую строку, сообщение «... пропуск» и две строки, предшествующие предполагаемой стартовой строке. Я думаю, это может варьироваться в зависимости от вашей системы.

2
Gefolge

Вы можете использовать параметр NR с командой awk :

cat <file> | awk '' 
Вы можете использовать эту команду с другими ограничениями. Как пример: `cat messages | awk '' `показывает только строки 7000, 7001 и 7002. Gefolge 7 лет назад 2
-1
Захватывающая ссылка, но на самом деле она не дает никакой информации, относящейся к этому вопросу, и ваше «хвостовое» предложение совпадает с принятыми и другими ответами от недель назад. зачем постить? quack quixote 15 лет назад 2
Ссылка не работает - `... не могу найти сервер на www.scripterworld.com`. Peter Mortensen 7 лет назад 0