Unix 命令用 6 个数字的字符串搜索每行任意 3 个匹配的数字

Unix 命令用 6 个数字的字符串搜索每行任意 3 个匹配的数字

有谁知道 UNIX 命令或一系列命令来列出包含 3 个匹配数字的行以搜索 6 个数字?例如,使用 38 39 40 41 42 43 进行搜索时,我希望看到每行列出 38 40 43 或 39 41 42 等组合。谢谢。

答案1

假设您有一个名为 的文件file,其中包含具有彼此不同的空格分隔数字的行,并且您有一组 6 个数字 - 例如 38、39、40、41、42、43 - 您想要以三个数字的组合来搜索,这样以随机顺序连续包含其中三个数字的行就会作为搜索结果列出,您可以使用:

grep -P  '((^|\s+)(38|39|40|41|42|43)(?=($|\s))){3}' file

它使用 grep 和 Perl 正则表达式 (PCRE)。

相关内容