繁体   English   中英

具有正则表达式的grep将看不到文件

[英]grep with regular expressions won't see files

我在grep中经常遇到这些问题。 好像有时它只是出于没有明显原因而停止工作。 我在目录中有许多文件,例如:car1,car2,car3 ...,car9.txt

当我键入egrep“ blabla” car [0-9] [0-9] *。txt时,我得到:“没有这样的文件或目录”同样的事情也出现在“ +”号上。

为什么在这里看不到个位数的文件?

Shell将通配符扩展应用于命令行,而不是正则表达式。 有关更多详细信息,另请参见man 7 glob

因此, *表示“零个或多个(任何)字符”,但并不意味着“零个或多个前面的实体”,因此并不适用于[0-9]所以就是你正在寻找:

"car" [any of 0-9] [any of 0-9] (zero or more of any chars) ".txt"

它将找不到任何一位数字的文件名。

要查找一位数字文件,请使用:

egrep "blabla" car[0-9].txt

要查找一位数字文件或两位数字文件,请使用:

egrep "blabla" car[0-9].txt car[0-9][0-9].txt

或尝试以下方法:

egrep "blabla" car[0-9]*.txt

它可能会捕获的不仅仅是car [any digits] .txt但在您的情况下,近似值可能会起作用,具体取决于目录的其他内容。

请注意, grep 对其参数应用正则表达式匹配,在本例中为"blabla"但这是在shell处理发生之后发生的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM