由AWK/Python/Bash以随机顺序包含三个7的无法搜索名称

Léo*_* 준영 0 python regex bash awk

我需要找到随机顺序包含三个数字7的名称.

我的尝试

我们需要找到不包含七个的名字

ls | grep [^7]
Run Code Online (Sandbox Code Playgroud)

然后,我们可以从整个空间中删除这些匹配

ls [remove] ls | grep [^7]
Run Code Online (Sandbox Code Playgroud)

我的伪代码中的问题开始快速重复.

如何通过AWK/Python/Bash以随机顺序找到包含三个7的名称?

[edit] 名称可以包含任意数量的字母,它包含三个7的单词.

unw*_*ind 7

我不理解关于"随机顺序"的部分.当重复的同一个标记时,你如何区分"顺序"?"a7b7"与"c7d7"的顺序是否与7s不同?

无论如何,这应该工作:

 ls *7*7*7*
Run Code Online (Sandbox Code Playgroud)

它只是让shell解决了问题,但也许我没有理解.

编辑:以上是错误的,它包括超过四个7s不需要的案例.假设这是bash,并且启用了扩展通配,则可以:

ls *([^7])7*([^7])7*([^7])7*([^7])
Run Code Online (Sandbox Code Playgroud)

这读作"零个或多个不是七人制的字符,后跟一个七个,后面跟着零个或多个不是七人制的字符",依此类推.重要的是要理解星号是这里的前缀运算符,对表达式([^7])进行操作,这意味着"除7之外的任何字符".


Joh*_*ery 5

我猜你想找到包含三个7的文件,但不多了.使用gnu grep和extends regexp switch(-E):


ls | grep -E '^([^7]*7){3}[^7]*$'
Run Code Online (Sandbox Code Playgroud)

应该做的伎俩.

基本上,匹配3次出现的"not 7后跟7",然后整个字符串中的一堆"not 7"(分别在模式的开头和结尾处的^和$).