Подтвердить что ты не робот

Как получить некоторые конкретные строки из огромного текстового файла в unix?

Я использую системы импорта на основе текстовых файлов с разделителями. Обычно используемые файлы могут быть почти 2 ГБ, и я должен проверить некоторые строки из этого файла.  Поэтому я хочу знать, как я могу выводить (на другой файл или просто на экран) строки определенного значения? Например. номер строки 1010123, 1002451, 994123 и т.д., точно так же, как в исходном файле?

4b9b3361

Ответ 1

Чтобы напечатать строку N, используйте:

sed 'Nq;d' file

Чтобы напечатать несколько строк (при условии, что они находятся в порядке возрастания), например. 994123, 1002451, 1010123:

sed '994123p;1002451p;1010123q;d' file

q после последнего номера строки сообщает sed выйти, когда достигнет 1010123-й строки, вместо того, чтобы тратить время, перебирая оставшиеся строки, которые нам не интересны. Именно поэтому он эффективен на больших файлы.

Ответ 2

Вы можете сделать это со многими инструментами Unix, например, с помощью awk:

# print first 5 lines with awk
awk 'NR>=1&&NR<=5{print}NR>=6{exit}' file

# print selection of lines 
awk 'NR==994123||NR==1002451||NR==1010123{print}NR>1010123{exit}' file

Ответ 3

В python:

readThisFile = open('YOURFILE')
outputFile = open('OUTPUT', w)

for actualline, linetext in enumerate(readThisFile):
    if actualline == WANTEDLINE
        outputFile.write(linetext)
    else:
        pass

Если вы хотите, вы можете изменить этот script для работы с аргументами (например, getline.py 1234)