【发布时间】:2014-04-03 17:17:43
【问题描述】:
我有一个包含英文单词的列表(每行 1 个,大约 100.000)-> a.txt 和 b.txt 包含字符串(大约 50.000 行,每行一个字符串,可以包含纯单词,word+something , 垃圾)。我想知道 b.txt 中的哪些字符串只包含英文单词(没有任何额外的字符)。
我可以用grep 做到这一点吗?
例子:
a.txt:
apple
pie
b.txt:
applepie
applebs
bspie
bsabcbs
输出:
c.txt:
applepie
【问题讨论】:
-
更加详细。目前,您的问题的解决方案是
echo "applepie" > c.txt。这可能不是你想要的。我们不喜欢猜测或给出答案。 -
简短的回答是否定的,仅使用
grep是不可能的。您需要根据a.txt与b.txt手动匹配每个可能的排列。 -
您的编辑使这项工作变得更加复杂。并非
a.txt中的每个单词排列都是有效的英语复合词,因此您所要求的甚至无法解决您的问题(根据您的示例,您的单词表不包含复合词)。即使您要这样做,您也需要构建一个排列列表,考虑到文件的大小,需要一种复杂的表示形式,否则您将遇到内存问题(某种树)。这不是您想用 shell 脚本解决的问题。您的问题确实没有简单的答案。