一尘不染

如何在Bash / Grep中转义单引号?

linux

我想用grep搜索看起来像这样的字符串:

something ~* 'bla'

我试过了,但是shell删除了单引号argh ..

grep -i '"something ~* '[:alnum:]'"' /var/log/syslog

什么是正确的搜索?


阅读 726

收藏
2020-06-02

共1个答案

一尘不染

grep -i "something ~\* '[[:alnum:]]*'" /var/log/syslog

为我工作。

  • 转义第一个*以匹配文字的方式,*而不是使其成为零个或多个匹配字符:
    ~*将匹配零个或多个匹配项,~而while
    ~\*匹配表达式~*之后something

  • 在周围使用双括号:alnum:(请参见此处的示例)

  • 使用*[[:alnum::]],不仅符合 一个 你单引号字符,但其中几
  • 单引号根本不需要转义,因为它们包含在受双引号限制的表达式中。
2020-06-02