Как удалить определенные ключи из списка слов?

Я создал список слов из ключей, начиная с 03000000000 и заканчивая 03999999999 через хруст.

Поэтому я хочу удалить из него определенное количество ключей, например, я хочу удалить ключи, начиная с 03509999999 по 03999999999.

Поэтому мне интересно, как это сделать. Поскольку файл списка слов составляет 12 ГБ, я даже не могу открыть его для этого вручную, но я предпочел бы сделать это с помощью некоторых простых команд в терминале.

У меня есть Kali Linux.

Предполагая, что слова одно на линии и отсортированы, вы можете сделать:

head --lines 509999999 input_file 

Если файл выглядит так:

 03000000000 03509999998 03509999999 03510000000 03999999998 03000000001 03999999999 03000000002 

(т. е. несортированные и несколько записей в строке), вы можете использовать следующую программу python:

 import sys def read(fp): buf = "" while True: if ' ' in buf or '\n' in buf: try: word, buf = buf.split(None, 1) except ValueError: word, buf = buf.strip(), "" if word: yield word if not buf: buf = fp.read(100) if not buf: yield None with open(sys.argv[1]) as fp: for x in read(fp): if x is None: break if sys.argv[2] <= x <= sys.argv[3]: continue print x 

начните с python test.py inputfile 03509999999 03999999999 . Результатом будут слова в том же порядке, что и в оригинале, но все будут разделены на новую строку.

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

 awk '$0 >= 03509999999 && $0 <= 03999999999 {next;}{print}' file