2016-02-12 65 views
0

我有一個名爲test的輸入文件看起來像這樣通配符的grep問題Ubuntu的

leonid sergeevich vinogradov 
ilya alexandrovich svintsov 

,當我用grep這樣grep 'leonid*vinogradov' test它說什麼,但是當我鍵入grep 'leonid.*vinogradov' test它給了我第一個字符串。 *.*有什麼區別?因爲我看不到任何數量的任何字符和任何字符後面跟着任何數量的任何字符。 我使用的是Ubuntu 14.04.3。

回答

1

*不匹配任何數量的字符,如在文件glob中。它是一個運算符,它表示之前的字符的0個或多個匹配項。正則表達式leonid*vinogradov需要v在0或更多d s之後立即出現。 .是表示任何單個字符的正則表達式metacharcter,因此.*匹配0個或多個任意字符。

+0

ty,我誤解了grep中通配符的含義 – user3880400

0

grep使用正則表達式和.*匹配0個或多個任意字符

凡爲'leonid*vinogradov'也被評估爲正則表達式,這意味着leoni其次0以上d因此您匹配失敗的。

0

這是Regular Expression grep的用法,簡稱爲正則表達式,不是你認爲的通配符。在這種情況下, 」。」表示任何字符,「」表示任意數量的(包括零)前一個字符,因此「。」意味着任何東西。

檢查鏈接,或谷歌它,這是一個強大的工具,你會發現值得知道。