我有short.txt(包含字符串)和long.txt(包含字符串)。
例如,short.txt包含:
这
该
long.txt包含:
这
THISIS
该
thisisan
thisisanexample
我有一个源代码,可以计算short.txt中的字符串是否在long.txt中。
grep -F -o -f short.txt long.txt |排序| uniq -c | sort -nr> counts.txt
所以counts.txt将包含:
3这个
1那
我的问题是:如何在单独的文件中得到结果,如:
3_this.txt(所以命中数+ _ + word + .txt)
(其中包含)
这
THISIS
thisisan
thisisanexample
1_that.txt
(包含)
小名单可以包含10.000+个字符串,长列表是100.000.000 +
我正在玩.sh,因为我可以轻松地在我的MAC上运行它。不知道你是否有更快的解决方案。
long.txt将在每个月更新,但每天都会更新。\ / p>
答案 0 :(得分:2)
简单的Python解决方案。这并不假设您已创建counted.py
import os
with open('short.txt', 'r') as shorttxt:
for s in shorttxt:
outfilename = s[:-1] + '.txt'
count = 0
with open('long.txt', 'r') as longtxt, open(outfilename, 'w') as out:
for l in longtxt:
if s[:-1] in l:
count += 1
out.write(l)
os.rename(outfilename, str(count) + '_' + outfilename)
答案 1 :(得分:1)
所有这些都是实现结果的相当迂回且低效的方式,但如果您已经完成了所有这些并创建了counted.txt
,您可以使用它来创建所需的文件:
while read count word; do
grep -F "$word" long.txt >"${count}_${word}.txt"
done < counted.txt
但是,像Pulkit Agarwal的回答一样,你会更好。