단어 목록에서 특정 키를 제거하는 방법은 무엇입니까?

단어 목록에서 특정 키를 제거하는 방법은 무엇입니까?

저는 크런치를 사용하여 03000000000에서 시작하여 03999999999로 끝나는 키워드 목록을 생성했습니다.

그래서 내가 원하는 것은 특정 수의 키를 제거하는 것입니다. 예를 들어 03509999999에서 03999999999까지 시작하는 키를 제거하고 싶습니다.

그래서 쉽게 할 수 있는 방법을 알고 싶습니다. 단어 목록 파일이 12GB이므로 열어서 수동으로 수행할 수도 없지만 터미널에서 몇 가지 간단한 명령을 사용하여 수행하는 것을 선호합니다.

나는 칼리 리눅스를 가지고 있다.

답변1

단어가 한 줄에 있고 정렬되어 있다고 가정하면 다음을 수행할 수 있습니다.

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. 출력 단어는 원래 단어와 동일한 순서로 되어 있지만 모든 단어는 줄 바꿈으로 구분됩니다.

답변2

한 줄에 단어를 찾으려면 awk를 사용할 수 있습니다.

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

관련 정보