过滤多个单词中的不同相同字符

过滤多个单词中的不同相同字符

我有一个非常大的单词表。如何使用 Unix(或者可能是 Python)查找符合特定字符共享标准的多个单词的实例?例如,我希望单词 1 和 2 具有相同的第四和第七个字符,单词 2 和 3 具有相同的第四和第九个字符,单词 3 和 4 具有相同的第二、第四和第九个字符。

例子:

aaadiigjlf
abcdefghij
aswdofflle
bbbbbbbbbb
bisofmlwpa
fsbdfopkld
gikfkwpspa
hogkellgis

可能会回归

abcdefghij
aaadiigjlf
fsbdfopkld
aswdofflle

编辑:为了澄清起见,我需要代码返回在给定位置共享相同字符的任何单词;我没有考虑特定的字符(如示例中给出的“d”和“g”)。此外,我希望它能够返回不符合所有标准的单词;例如,在给出的示例中,单词 1 和 4 共享第四个字符,但不一定是第二个、第七个和第九个字符。对于我以完成形式运行的程序,我希望它根据九个严格的字符共享标准返回一个非常小的单词列表(可能只有十个)。

答案1

使用grep哪些用途常用表达

# Find all lines where the fourth and seventh letter are "d" and "g"
grep '...d..g'  somefile

# Find all lines where the fourth and ninth letters are "d" and "l"
grep '...d....l' somefile

如果你想执行两个都规则,你可以使用管道将它们链接在一起:

grep '...d..g' somefile | grep '...d....l'

您可以使用语法而不是 123 个点来减少正则表达式的详细程度和多个点{123},例如:

egrep '.{3}d.{2}g' somefile

请注意,随着正则表达式变得越来越复杂,您可能需要使用来egrep支持某些语法,例如上面的重复语法。

相关内容