小编Mar*_*tin的帖子

为什么 egrep 忽略负空格?

为什么不能grep -E像我期望的那样对负空格起作用?IE[^\s]+

我写了一个正则表达式来解析我的 .ssh/config

grep -Ei '^host\s+[^*\s]+\s*$' ~/.ssh/config

# cat ~/.ssh/config
Host opengrok-01-Eight
    Hostname opengrok-01.company.com

Host opengrok-02-SIX
    Hostname opengrok-02.company.com

Host opengrok-03-forMe
    Hostname opengrok-03.company.com

Host opengrok-04-ForSam
    Hostname opengrok-04.company.com

Host opengrok-05-Okay
    Hostname opengrok-05.company.com

Host opengrok-05-Okay opengrok-03-forMe
    IdentityFile /path/to/file

Host opengrok-*
    User root
Run Code Online (Sandbox Code Playgroud)

我得到的是

Host opengrok-01-Eight
Host opengrok-03-forMe
Host opengrok-05-Okay
Host opengrok-05-Okay opengrok-03-forMe
Run Code Online (Sandbox Code Playgroud)

六和山姆在哪里!

我花了一些时间才意识到[^\s*]+ie 匹配任何不是空白或*, 1 次或多次实际上是匹配任何不是\,s*1 次或多次!

修复非常简单,因为该正则表达式适用于 rex101.com(使用 perl),即切换-E-P

# grep -Pi '^host\s+[^*\s]+\s*$' ~/.ssh/config …
Run Code Online (Sandbox Code Playgroud)

grep regular-expression

4
推荐指数
2
解决办法
701
查看次数

标签 统计

grep ×1

regular-expression ×1