如何在类似字典的文件上使用 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
这是 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