저는 크런치를 사용하여 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