grep通配符问题ubuntu

时间:2016-02-12 15:57:46

标签: bash ubuntu grep

我有一个名为test的输入文件,看起来像这样

leonid sergeevich vinogradov
ilya alexandrovich svintsov

当我像这样grep 'leonid*vinogradov' test使用grep时它没有说什么,但当我输入grep 'leonid.*vinogradov' test时,它给了我第一个字符串。 *.*之间的区别是什么?因为我看到任意数量的任何字符和任何字符后跟任意数量的任何字符没有区别。 我使用的是ubuntu 14.04.3。

3 个答案:

答案 0 :(得分:1)

*不匹配任意数量的字符,例如文件glob中。它是一个运算符,表示上一个字符的0个或多个匹配项。正则表达式leonid*vinogradov需要在{0}个v之后立即显示d.是表示任何单个字符的正则表达式metacharcter,因此.*匹配0个或多个任意字符。

答案 1 :(得分:0)

grep使用正则表达式,.*匹配0个或更多任何字符

其中'leonid*vinogradov'也被评估为正则表达式,它表示leoni后跟 0或更多字母d,因此您的匹配失败。

答案 2 :(得分:0)

Regular Expression grep使用,简称正则表达式,而不是您认为的通配符。在这种情况下, ”。”表示任何字符,“”表示前一个字符的任意数量(包括零),因此“。”表示此处的任何内容。

检查链接,或谷歌,它是一个你会发现值得知道的强大工具。