最初の研究プロジェクトとしてアッ、出力を再フォーマットしたいです。コントロールパネルDebian 11 で次のようにインストールできるコマンドです。
sudo apt install wmctrl
開いているすべてのウィンドウに関する情報を一覧表示するには、次のコマンドを実行します。
wmctrl -lpG
出力例:
0x0120002b 4 7 2 157 3836 2068 my-pc window - AWK - Dealing with spaces in the last column of output from wmctrl - Unix & Linux Stack Exchange — Firefox
上記のコマンドでは各列の意味を覚えていないので、AWKを使用して名前と値のペアに分割したいと思います。
wmctrl -lpG | awk '{print "----------------------\nWindow ID: " $1 "\nDesktop Number: " $2 "\nProcess ID: " $3 "\nx-offset: " $4 "\ny-offset: " $5 "\nwidth: " $6 "\nheight: " $7 "\nMachine Name: " $8 "\nWindow Title: " $9}'
出力例:
----------------------
Window ID: 0x0120002b
Desktop Number: 4
Process ID: 7
x-offset: 2
y-offset: 134
width: 3836
height: 2068
Machine Name: my-pc
Window Title: window
希望の出力:
----------------------
Window ID: 0x0120002b
Desktop Number: 4
Process ID: 7
x-offset: 2
y-offset: 134
width: 3836
height: 2068
Machine Name: my-pc
Window Title: window - AWK - Dealing with spaces in the last column of output from wmctrl - Unix & Linux Stack Exchange — Firefox
しかし、どのように処理するのかわかりません。9番目の列出力wmctrl -lpG
(列9にスペースが含まれているため)。私はただ得ます。最初の単語ウィンドウタイトルフルウィンドウタイトルの代わりに。
この問題を解決する簡単な方法はありますか?
ベストアンサー1
wmctrl -lpG \
| awk '{
tmp=$0;
# remove first 8 fields from tmp
sub(/^[^ ]+ +[^ ]+ +[^ ]+ +[^ ]+ +[^ ]+ +[^ ]+ +[^ ]+ +[^ ]+ /,"",tmp);
print "----------------------\nWindow ID: " $1 "\nDesktop Number: " $2 "\nProcess ID: " $3 "\nx-offset: " $4 "\ny-offset: " $5 "\nwidth: " $6 "\nheight: " $7 "\nMachine Name: " $8 "\nWindow Title: " tmp
}'
出力:
----------------------
Window ID: 0x0120002b
Desktop Number: 4
Process ID: 7
x-offset: 2
y-offset: 157
width: 3836
height: 2068
Machine Name: sidekick
Window Title: window - AWK - Dealing with spaces in the last column of output from wmctrl - Unix & Linux Stack Exchange — Firefox