ASCII文字と一致しないgrep文字列

ASCII文字と一致しないgrep文字列

アクティブウィンドウを次の親ワークスペースに移動し、キーに割り当てるスクリプトを作成しようとしています。 xdotoolを使用してアクティブウィンドウを見つけ、wmctrlを使用してアクティブウィンドウを一覧表示し、grepを使用してウィンドウリスト内のアクティブウィンドウを見つけて、どのワークスペースにあるかを確認して1ずつ増やし、ウィンドウを次に移動しようとします。該当ワークスペース(存在する場合)

ご覧のように、この値をACTWIND変数または値0x5a00004(および行の先頭に関係なく一重引用符または二重引用符のバリアント)で検索すると行が見つかりませんが、同じ行を検索すると確立されます。私のスクリプトでは、変数を使用するか、xdotool呼び出しで変数の場所を置き換えて作業する必要があります。

ACTWIND=$( printf 0x%x $(xdotool getactivewindow) )

$ echo “123 $ACTWIND 456”
123 0x5a00004 456

$ wmctrl -l
0x03600001 0 hpdv9917d Conky (hpdv9917d)
0x02800010 0 hpdv9917d YiPs Wiki (i powered) – Search – Mozilla Firefox
0x02800027 0 hpdv9917d Print all variables in a class? – Python – Stack Overflow – Mozilla Firefox
0x02800038 0 hpdv9917d (5) antiX (and MX) frugal installs (with grub entry) – YouTube – Mozilla Firefox
0x05a00004 0 hpdv9917d LXTerminal
0x02000002 0 hpdv9917d mrxvt-mini
0x02800043 0 hpdv9917d how to shift applications from workspace 1 to 2 using command – Ask Ubuntu – Mozilla Firefox
0x02600003 0 hpdv9917d *untitled – Geany
0x03200003 0 hpdv9917d antiX Control Center
0x03e00002 0 hpdv9917d alsamixer
0x01000008 0 hpdv9917d /home/bobc/Downloads/work

$ wmctrl -d
0 * DG: 1440×900 VP: 0,0 WA: 0,0 1440×875 N/A
1 – DG: 1440×900 VP: 0,0 WA: 0,0 1440×875 N/A

$ wmctrl -l | grep $ACTWIND

$ wmctrl -l | grep 0x5a00004

$ wmctrl -l | grep "0x5a00004"

$ wmctrl -l | grep '0x5a00004'

$ wmctrl -l | grep '^0x5a00004'

$ wmctrl -l | grep "^0x5a00004"

$ wmctrl -l | grep LXTerminal
0x05a00004  0 hpdv9917d LXTerminal

ベストアンサー1

探している文字列は0x05a...代わりにする必要があります0x5a...

変数に割り当てる方法を次のように変更したい場合があります。

active_window=$( printf '0x%08x' "$( xdotool getactivewindow )" )

grep(正規表現の一致ではなく)正確な文字列の一致が必要な場合は、次のようにします-F

grep -F '0x05a00004'

ただし、この場合は、行の先頭に式を固定したい場合があります。

grep '^0x05a00004'

または

grep "^$active_window"

または多分

awk -v str="$active_window" '$1 == str'

スペースで区切られた最初のフィールドに対して正確な文字列照合を実行します。

おすすめ記事