【问题标题】:Grep regex to select only 10 characterGrep 正则表达式仅选择 10 个字符
【发布时间】:2016-04-22 05:49:21
【问题描述】:

我有一个日志文件,我正在使用 grep(ing) 来选择某个字符。

日志文件的模式是这样的

Some Random string.... Message Sent [10 character --

我只对 [--

之间的 10 个字符串感兴趣

我已经成功地编写了看起来像这样的正则表达式

"Message Sent \[.\{10\} --" 

我已经通过here 交叉检查了上述正则表达式。

但不幸的是,正则表达式没有产生任何输出

grep -o "Message Sent \[.\{10\}) --" log/development.log

但我最感兴趣的是 10 个字符,但上面的正则表达式产生 'Message Sent [' + 10 character + --

有什么线索吗?

【问题讨论】:

    标签: regex grep


    【解决方案1】:

    使用\KPerl-regex 中的模式)丢弃之前匹配的字符。

    grep -oP 'Message Sent \[\K.{10}(?= -+)' log/development.log
    

    grep -oP 'Message\s+Sent\s+\[\K.{10}(?=\s+-+)' log/development.log
    

    DEMO

    【讨论】:

    • 你有\K定义的链接吗?
    • 非常感谢分享。
    【解决方案2】:

    只需使用 sed:

    $ sed -r -n 's/.*Message Sent \[(.{10}).*/\1/p' file
    10 charact
    

    【讨论】:

      猜你喜欢
      • 2021-05-16
      • 2011-09-23
      • 2018-07-22
      • 2019-11-25
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      • 2019-06-16
      相关资源
      最近更新 更多