在 Ubuntu 中以“1”开头的 grep 行

Tim*_*Tim 61 grep regular-expression

我尝试搜索以“1”开头的行

ls -1 | grep ^1*
Run Code Online (Sandbox Code Playgroud)

但它返回不以 1 开头的行。我在这里缺少什么?

oto*_*kan 91

您的正则表达式并不意味着您认为它的作用。它匹配所有以 (^) 开头且重复一 (1) 次 (*) 次的所有行。所有字符串都匹配该正则表达式。grep '^1'做你想做的。

  • 或者同样有效:`grep "^$some_var"` (2认同)

Ber*_*ard 43

您是否尝试过以下操作?

 ls -1 | grep "^1"
Run Code Online (Sandbox Code Playgroud)

也就是说,删除*,它基本上告诉grep,找到^1表达式的零次或多次出现。换句话说:匹配或不匹配以 1 开头的行。


jor*_*anm 13

尽管这不能回答您的问题,但这是解决您的目标的更好方法:

ls -ld 1*
Run Code Online (Sandbox Code Playgroud)

您可以使用 shell glob 列出所有以1. 请注意,*与正则表达式相比,shell globbing 具有不同的含义。

  • 在 [shell glob](http://mywiki.wooledge.org/glob) 中,`*` 是一个通配符,意思是“0 个或多个 *任意*字符”。otokan 的回答中解释了正则表达式的含义。 (2认同)