![Ubuntu 中 grep 以“1”开头的行](https://linux22.com/image/44274/Ubuntu%20%E4%B8%AD%20grep%20%E4%BB%A5%E2%80%9C1%E2%80%9D%E5%BC%80%E5%A4%B4%E7%9A%84%E8%A1%8C.png)
我尝试使用搜索以“1”开头的行
ls -1 | grep ^1*
但它返回不以 1 开头的行。我在这里缺少什么?
答案1
你的正则表达式并不意味着你所认为的那样。它匹配以 (^) 开头且重复一 (1) 次或多次 (*) 的所有行。所有字符串都与该正则表达式匹配。grep '^1'
做你想做的事。
答案2
您尝试过以下操作吗?
ls -1 | grep "^1"
也就是说,删除*
,它基本上告诉grep
,找到零个或多次出现的^1
表达式。换句话说:匹配以 1 开头的行,或者不匹配。
答案3
尽管这不能回答您的问题,但对于您的目标来说,这是一个更好的解决方案:
ls -ld 1*
您可以使用 shell glob 列出所有以1
.请注意,*
在 shell 通配符中,它的含义与正则表达式不同。
答案4
^1.* 匹配整行,或者正如上面所说,^1 获取该行中包含的字符串。
不同样式的正则表达式使用不同的符号表示字符,某些选项指定您想要的样式。不同的选项指定是否要匹配整行,或仅匹配其中的一部分,或将整个输入作为一个字符串进行匹配。