“?”的用法 在grep中

所以,我在和grep玩耍,情况是这样的:

我在根目录中有两个文件“ sample”和“ simple”,从我读到的?regexp匹配前一个字符的出现,因此以下内容应该给我“ simple”作为输出:-

ls | grep 'sia?mple'

但它似乎不起作用。但是,以下工作原理:

ls | awk '/sia?mple/ {print}'

还LS的版本?*等似乎比的grep或awk的工作方式不同


元芳怎么了
浏览 226回答 1
1回答

茅侃侃

ls完全不支持?,*或任何元字符。外壳将扩大?,*,[ ],{ }(和一对夫妇的其他东西),在命令行上(如果加引号)。这会在命令运行之前发生(您可以使用echo s?mple或进行检查echo s[ai]mple)。有许多不同的正则表达式“风味”。基本上,每个工具和库都有其自己的正则表达式语法和怪癖。至于grep,请查阅手册。在具体的:在基本正则表达式中,元字符'?','+','{','|','('和')'失去了特殊的含义;而是使用反斜杠版本'\?','\ +','\ {','\ |','\('和'\)'。(如果grep使用默认选项运行,将获得“基本”正则表达式。)因此:grep 'sia\?mple'将匹配siample和simple。
打开App,查看更多内容
随时随地看视频慕课网APP