Journalctl内部grepから一致するパターンのみを出力するオプションを指定できますか?

Journalctl内部grepから一致するパターンのみを出力するオプションを指定できますか?

次のジャーナルメッセージがあります。

$ 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にパイプせずに-gJournalctlオプションを使用したいと思います。

内部 grep には次のパターンを指定できます。

$ journalctl _COMM=kwin_wayland -o cat --since "-10s" -g "js: \K.*" 
js: hello
goodbue

私のメッセージ(そして幸いにも、メッセージの次の行)も印刷します。しかし、これは「js:」部分に関連しています。捨てたいです。

Journalctlの内部grepオプション"-o"を何とか指定できますか?
または、パターンでグループ化を使用できますが、グループのみを出力するように指定するにはどうすればよいですか?

ベストアンサー1

おすすめ記事