다음과 같은 일지 메시지가 있습니다.
$ journalctl _COMM=kwin_wayland -o cat --since "-10s"
...
kwin_screencast: Dropping a screencast frame because the compositor is slow
kwin_screencast: Dropping a screencast frame because the compositor is slow
js: hello
goodbue
kwin_screencast: Dropping a screencast frame because the compositor is slow
kwin_screencast: Dropping a screencast frame because the compositor is slow
...
"js:"로 시작하는 메시지만 추출하고 싶습니다.
Journalctl 매뉴얼에서 :
-g, --grep=
MESSAGE= 필드가 지정된 정규식과 일치하는 항목으로 출력을 필터링합니다. PERL 호환 정규 표현식을 사용합니다. 구문에 대한 자세한 설명은 pcre2pattern(3)을 참조하세요.
일반 grep은 -P 옵션을 사용하여 PCRE 모드에서 작동할 수 있습니다. 설명한대로여기-o
, 패턴만 일치시키고 \K
패턴 자체의 시작 부분을 제거하는 데 사용할 수 있습니다 . 따라서 이 명령은 다음과 같습니다.
$ journalctl _COMM=kwin_wayland -o cat --since "-10s" | grep -Po "js: \K.*"
hello
내가 원하는 것을 거의 제공합니다(불행히도 메시지의 다음 줄도 잘립니다).
단일 명령을 사용하고 싶습니다. 즉, 일반 grep으로 파이프하지 않고 -g
Journalctl 옵션을 사용하고 싶습니다.
내부 grep에 대해 다음과 같은 패턴을 지정할 수 있습니다.
$ journalctl _COMM=kwin_wayland -o cat --since "-10s" -g "js: \K.*"
js: hello
goodbue
내 메시지(그리고 운 좋게도 메시지의 다음 줄)도 인쇄합니다. 하지만 이는 "js:" 부분과 관련이 있습니다. 나는 그것을 버리고 싶다.
Journalctl의 내부 grep 옵션 "-o"를 어떻게든 지정할 수 있습니까?
또는 패턴에서 그룹화를 사용할 수 있지만 그룹만 출력하도록 지정하려면 어떻게 해야 합니까?