如何在类似字典的文件上使用 grep

How to use grep on dictionary-like file

这是 journald 通过 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

它returns;

_SYSTEMD_UNIT=systemd-jour

而不是;

_SYSTEMD_UNIT=systemd-journald.service

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

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

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