簡體   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