デフォルトモジュールはウィンドウ名を出力するので、現在アクティブなウィンドウクラスを表示するカスタムPolybarモジュールを作成しようとしています。
このコマンドを使用してウィンドウクラスを取得します。
xprop -id $(xdotool getactivewindow) WM_CLASS
次の出力を取得します。
WM_CLASS(STRING) = "kitty", "kitty"
ただし、希望の出力は次のとおりです。
kitty
どうすればいいですか?
ベストアンサー1
次の方法で外れることがあります。
xprop -id $(xdotool getactivewindow) WM_CLASS |
awk -F '"' '{print $2}'
ただし、(より簡単に)次のものを使用することもできます。
xprop -id $(xdotool getactivewindow) WM_CLASS |
cut -d '"' -f 2
または(警告、正規表現が一致しない場合は、入力全体が印刷されます)
xprop -id $(xdotool getactivewindow) WM_CLASS |
sed 's/^[^"]*"\([^"]*\)".*$/\1/'
またはsedをもう一度使用してください。しかし、もう少し強力になります。
xprop -id $(xdotool getactivewindow) WM_CLASS |
sed -n 's/^[^"]*r"\([^"]*\)".*$/\1/p'
または(それほど強力ではありませんが)grepを使用してください(ただし、GNU grepとPerlの正規表現のみ):
xprop -id $(xdotool getactivewindow) WM_CLASS |
grep -Po '^[^"]*"\K[^"]*'
これはあなたが言うのですか?
つまり、最初の引用符ペア内の文字列を抽出します。そうでなければ失敗しますか?