为了账号安全,请及时绑定邮箱和手机立即绑定

“?”的用法 在grep中

“?”的用法 在grep中

元芳怎么了 2021-04-08 18:14:42
所以,我在和grep玩耍,情况是这样的:我在根目录中有两个文件“ sample”和“ simple”,从我读到的?regexp匹配前一个字符的出现,因此以下内容应该给我“ simple”作为输出:-ls | grep 'sia?mple'但它似乎不起作用。但是,以下工作原理:ls | awk '/sia?mple/ {print}'还LS的版本?,*等似乎比的grep或awk的工作方式不同
查看完整描述

1 回答

?
茅侃侃

TA贡献1842条经验 获得超21个赞

ls完全不支持?*或任何元字符。

外壳将扩大?*[ ]{ }(和一对夫妇的其他东西),在命令行上(如果加引号)。这会在命令运行之前发生(您可以使用echo s?mple或进行检查echo s[ai]mple)。

有许多不同的正则表达式“风味”。基本上,每个工具和库都有其自己的正则表达式语法和怪癖。

至于grep,请查阅手册。

在具体的:

在基本正则表达式中,元字符'?','+','{','|','('和')'失去了特殊的含义;而是使用反斜杠版本'\?','\ +','\ {','\ |','\('和'\)'。

(如果grep使用默认选项运行,将获得“基本”正则表达式。)

因此:

grep 'sia\?mple'

将匹配siamplesimple


查看完整回答
反对 回复 2021-04-16
  • 1 回答
  • 0 关注
  • 225 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信