Como remover chaves específicas de uma lista de palavras?

3

Eu gerou uma lista de palavras de chaves a partir de 03000000000 e termina em 03999999999 através de crunch.

Então, o que eu quero é excluir um número específico de chaves dele, por exemplo, eu quero excluir as chaves a partir de 03509999999 a 03999999999.

Então, eu estou querendo saber como fazer isso facilmente. Como o arquivo de lista de palavras é de 12 GB, não consigo nem abrir para fazer isso manualmente, mas prefiro fazer isso através de alguns comandos fáceis no terminal.

Eu tenho o Kali Linux.

    
por user4089052 20.11.2014 / 08:45

2 respostas

2

Assumindo que as palavras são uma em uma linha e classificadas, você pode fazer:

head --lines 509999999 input_file

Se o arquivo se parece com:

03000000000 03509999998 03509999999 03510000000 03999999998
03000000001 03999999999 03000000002

(ou seja, entradas não classificadas e múltiplas em uma linha) você pode usar o seguinte python programa:

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

comece com python test.py inputfile 03509999999 03999999999 . A saída será as palavras na mesma ordem que no original, mas todas serão separadas por nova linha.

    
por 20.11.2014 / 08:58
0

Se as palavras estiverem localizadas em cada linha, você poderá usar o awk,

awk '$0 >= 03509999999 && $0 <= 03999999999 {next;}{print}' file
    
por 20.11.2014 / 09:41