Unix кішка, починаючи з лінії


39

Який найкращий спосіб вивести файл з файла, починаючи з певного рядка (велике число, наприклад, 70000). Щось на зразок:

cat --line=70000 <file>

Відповіді:


59

Погляньте на хвіст, точніше, це --lines = + N перемикач:

tail --lines=+100 <file>

Ого. Я не знав цього навіть після використання цього на Linux протягом 8 років! Я завжди використовував bash fn! Дякую ! getFromLine () {lineno = wc -l $1 | awk '{print $1}'; lineno = expr $lineno - $2; хвіст -n $ lineno $ 1; }
secureBadshah

2
Як зауважимо, це не працює на гірському леві (Darwin Kernel Version 13.1.0). Варіант для гірського леваtail -n
Каушик Ґозе

21

Найбільш очевидний спосіб 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, що містить порожній рядок, повідомлення «... пропуск», і два рядки , що передують від передбачуваної стартової лінії. Я думаю, це може змінюватися залежно від вашої системи.


2

Ви можете використовувати параметр NR за допомогою команди awk :

cat <file> | awk '{if (NR>=7000) print}'

2
Ви можете використовувати цю команду з іншими обмеженнями. Як зразок: cat messages | awk '{if (NR>=7000 && NR <7003) print}'показує лише рядки 7000, 7001 та 7002.
Gefolge

-1

2
захоплююче посилання, але воно насправді не дає ніякої інформації, яка стосується цього питання, і ваша tailпропозиція така сама, як прийняті та інші відповіді від тижнів тому. навіщо турбуватися публікувати?
кихат шарлатан

Посилання розірвано -...can't find the server at www.scripterworld.com.
Пітер Мортенсен
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.