私はクランチを使用して03000000000で始まり、03999999999で終わるキーワードのリストを生成しました。
だから私がしたいのは、特定の数のキーを削除することです。たとえば、03509999999から03999999999までのキーを削除したいと思います。
だから簡単にできる方法を知りたいです。単語リストファイルは12 GBなので、開いて手動で実行することはできませんが、端末でいくつかの簡単なコマンドを使用して実行することをお勧めします。
私はカーリーLinuxを持っています。
答え1
単語が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
1行で単語を見つけるには、awkを使用できます。
awk '$0 >= 03509999999 && $0 <= 03999999999 {next;}{print}' file