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的单词.
我不理解关于"随机顺序"的部分.当重复的同一个标记时,你如何区分"顺序"?"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之外的任何字符".
我猜你想找到包含三个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"(分别在模式的开头和结尾处的^和$).
| 归档时间: |
|
| 查看次数: |
401 次 |
| 最近记录: |