8

Вывести файл, пропустив первые X строк в Bash

1

У меня есть очень большой файл, и я хочу вывести его на экран, пропустив первые 1,000,000 строк. Я посмотрел в документацию по команде cat, но не нашел в ней опции для этого. Ищу команду или простую программу на Bash, которая могла бы решить эту задачу. Как это можно сделать?

5 ответ(ов)

1

Самый простой способ удалить первые десять строк из файла, который я нашел:

$ sed 1,10d file.txt

В общем случае, где X — это количество удаляемых строк с начала файла, благодарю комментаторов и редактировщиков за помощь:

$ sed 1,Xd file.txt
1

Если у вас установлена утилита GNU tail, вы можете сделать следующее:

tail -n +1000001 huge-file.log

Знак + в этом примере делает именно то, что вам нужно. Как указано в руководстве (man page):

Если первый символ K (количество байт или строк) — это +, печать начинается с K-го элемента с начала каждого файла.

Таким образом, как упомянуто в комментарии, использование +1000001 начнет вывод с первой строки после первых 1,000,000 строк.

0

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

tail -n +3 <имя_файла>

Если вам нужно пропустить первые x строк, можете использовать такую команду:

tail -n +$((x+1)) <имя_файла>

Здесь <имя_файла> замените на название вашего файла.

0

Вот менее многословная версия с использованием AWK:

awk 'NR > 1000000' myfile.txt

Тем не менее, я бы рекомендовал использовать целые числа для большей ясности.

0

Команда для удаления первой строки и вывода оставшихся строк выглядит следующим образом:

sed -n '1d;p'

В этой команде 1d указывает sed удалить первую строку, а -n подавляет автоматический вывод. После этого p (печатать) выводит все строки, кроме удаленной. Таким образом, вы получите весь текст, за исключением первой строки.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь