Вывести определенную строку огромного текстового файла - PullRequest
33 голосов
/ 17 ноября 2011

У меня есть дамп sql с 300 МБ, который выдает ошибку в конкретной строке.

Но эта строка находится в середине файла. Каков наилучший подход?

head -n middleLine dump.sql > output?

Или я могу вывести только нужную мне строку?

Ответы [ 8 ]

43 голосов
/ 17 ноября 2011

Вы можете использовать sed -n -e 123456p your.dump для печати строки 123456

23 голосов
/ 17 ноября 2011

Если файл длинный, рассмотрите возможность использования

sed -n 'X{p;q}' file

, где X - номер строки.После достижения этой строки он перестанет читать файл.

8 голосов
/ 17 октября 2014

Если sed слишком медленный на ваш вкус, вы также можете использовать

cat $THE_FILE | head -n $DESIRED_LINE | tail -n 1
3 голосов
/ 22 октября 2014

Это также можно сделать с помощью Perl:

perl -wnl -e '$. == 4444444 and print and exit;' FILENAME.sql

4444444 - номер строки, которую вы хотите напечатать.

3 голосов
/ 18 ноября 2011

Это может работать для вас:

 sed 'X!d;q' file

, где X - номер строки.

3 голосов
/ 17 ноября 2011

Вы можете использовать sed:

sed -n "x p" dump.sql

, где x - номер строки.

2 голосов
/ 05 апреля 2016

Вы также можете попробовать awk, например:

awk 'NR==YOUR_LINE_NO{print}' file_name
0 голосов
/ 17 ноября 2011

Если вы знаете фразу в этой строке, я бы использовал grep.Если фраза «errortext», используйте:

$ cat dump.sql | grep "errortext"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...