我经常遇到grep这些问题。好像有时它会在没有明显原因的情况下停止工作。 我在目录中有许多文件,例如: car1,car2,car3 ...,car9.txt
当我输入egrep“blabla”car [0-9] [0-9] * .txt时,我得到:“没有这样的文件或目录” “+”符号也会发生同样的事情。
为什么我在这里看不到单个数字文件?
答案 0 :(得分:2)
shell将wildcard expansion应用于命令行,而不是正则表达式。有关详细信息,另请参阅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处理发生后会发生这种情况。