【问题标题】:How to use grep on dictionary-like file如何在类似字典的文件上使用 grep
【发布时间】:2017-05-04 00:08:42
【问题描述】:

这里是 journald via journalctl -o verbose 的输出。 我试图缩小范围并仅过滤所需的值。

   Fr 2016-12-02 18:54:33.675283 CET [s=asd;i=4;b=asdasd;m=asdasd;t=asdasd;x=asdasda]
        PRIORITY=6
        _BOOT_ID=5asd
        _MACHINE_ID=3asd
        _HOSTNAME=asd
        _SOURCE_MONOTONIC_TIMESTAMP=0
        _TRANSPORT=kernel
        SYSLOG_FACILITY=0
        SYSLOG_IDENTIFIER=kernel
        MESSAGE=Iasdasadt
        _SYSTEMD_CGROUP=/system.slice/systemd-journald.service
        _SYSTEMD_UNIT=systemd-journald.service

当我应用类似 -在我将结果转储到 .txt 之后-

egrep -in -o --color '_SYSTEMD_UNIT=[^\n]*' /JOURNALD/verbose.txt

返回;

_SYSTEMD_UNIT=systemd-jour

代替;

_SYSTEMD_UNIT=systemd-journald.service

我相信我完全错过了一个基本点。但是,直到现在我都找不到它。不要犹豫,分享您的想法。

【问题讨论】:

  • 我不明白为什么人们拒绝投票而不是说些什么。
  • 您是否要在[^\n]* 的下一个换行符之前获取所有内容?
  • 是的,它试图读取整行。

标签: linux ubuntu grep sh journal


【解决方案1】:

您的正则表达式中的\n 与换行符不匹配;它与“journald”中的“n”相匹配。 ([^\n] 在这里匹配除文字 \n 之外的任何字符。)您应该改用 .*$,它匹配直到行尾的任何字符序列:

egrep -in -o --color '_SYSTEMD_UNIT=.*$' /JOURNALD/verbose.txt

【讨论】:

  • 谢谢!我将它放入我的代码 sn-p 中,它解决了我的问题。
猜你喜欢
  • 2017-10-26
  • 2014-04-27
  • 1970-01-01
  • 2021-09-16
  • 1970-01-01
  • 2019-01-06
  • 1970-01-01
  • 2011-03-17
  • 2019-04-15
相关资源
最近更新 更多