質問

wmctrlからウィンドウpid(firefoxのみ)を取得したいのですが、 wmctrl -lp | grep Firefox | awk -F" " " {print $ 1}" が、出力が予想と一致しません。助けてください。

beer@beer-laptop# wmctrl -lp
0x0160001b -1 6504   beer-laptop x-nautilus-desktop
0x016000bd  0 6504   beer-laptop conference - File Browser
0x03e00003  0 0              N/A XBMC Media Center
0x03800081  0 7282   beer-laptop Xbmc_ConferenceWindow.py (~/.qlive/xbmc-conference) - gedit
0x0352f117  0 6963   beer-laptop Ask a Question - Stack Overflow - Chromium
0x01400040 -1 6503   beer-laptop Top Expanded Edge Panel
0x01400003 -1 6503   beer-laptop Bottom Expanded Edge Panel
0x03202deb  0 6866   beer-laptop beer@beer-laptop: ~/.qlive/conference
0x012000c4  0 12134  beer-laptop Common threads: Awk by example, Part 1 - Mozilla Firefox
beer@beer-laptop# wmctrl -lp | grep Firefox | awk -F"  " "{print $1}"
0x012000c4  0 12134  beer-laptop Common threads: Awk by example, Part 1 - Mozilla Firefox
  • この場合、my prefer = 0x012000c4
役に立ちましたか?

解決

wmctrl -lp | awk '/Firefox/ { print $1 }'

grepは必要ありません。 Awkがそれを行います。また、デフォルトのフィールド区切り文字は空白なので、指定する必要はありません。また、シェルが$ 1を展開しないように、awkスクリプトを単一引用符で囲みます。それが、スクリプトが失敗した理由です。 $ 1は何も変化せず、awkアクションは" print"になり、行全体が印刷されます。

他のヒント

{print $ 1} の前後の二重引用符を一重引用符に置き換えます。これにより、シェルが $ 1 を展開できなくなります。

awk '{print $ 1}'

次のことができます。

wmctrl -lp | grep firefox | awk '{print $1}'
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top