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

40

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

cat --line=70000 <file>
vonhogen
источник

Ответы:

60

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

tail --lines=+100 <file>
Свен
источник
Вау. Я не знал этого даже после использования этого на Linux в течение 8 лет! Я всегда использовал Баш FN! Благодарность ! getFromLine () {lineno = wc -l $1 | awk '{print $1}'; бельё = expr $lineno - $2; tail -n $ lineno $ 1; }
secureBadshah
2
Как примечание, это не работает на Mountain Lion (Darwin Kernel Version 13.1.0). Вариант для Горного льваtail -n
Каушик Гозе
22

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

tail -n +70000

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

sed -pe '1,69999d'
Крис Джонсен
источник
tailотлично работал в MinGW (на 600 МБ текстовом файле). Время выполнения составило всего несколько секунд (но входной файл уже мог находиться в файловом кеше).
Питер Мортенсен
2

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

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

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

AlohaUnixFan
источник
2

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

cat <file> | awk '{if (NR>=7000) print}'
Gefolge
источник
2
Вы можете использовать эту команду с другими ограничениями. Как пример: cat messages | awk '{if (NR>=7000 && NR <7003) print}'показывает только строки 7000, 7001 и 7002.
Gefolge
-1

хвост +250

больше о команде unix cat


источник
2
Захватывающая ссылка, но она не дает никакой информации, относящейся к этому вопросу, и ваше tailпредложение совпадает с принятыми и другими ответами от недель назад. зачем постить?
Quackote Quixote
Ссылка не работает -...can't find the server at www.scripterworld.com.
Питер Мортенсен