Question

J'aime bien obtenir le pid de fenêtre (uniquement sur firefox) de wmctrl, j'ai essayé wmctrl -lp | grep Firefox | awk -F " " "{print $ 1}}" mais le résultat ne correspond pas à mes attentes. Aide s'il vous plaît.

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
  • Dans ce cas, ma préférence = 0x012000c4
Était-ce utile?

La solution

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

Pas besoin de grep. Awk le fera. De plus, le séparateur de champ par défaut est un espace, il n'est donc pas nécessaire de le spécifier. De plus, utilisez des guillemets simples autour de votre script awk pour que le shell ne développe pas $ 1. C'est pourquoi votre script a échoué. 1 $ est devenu nul et votre action awk est devenue "print", ce qui affiche toute la ligne.

Autres conseils

Remplacez les guillemets autour de {print $ 1} par des guillemets simples. Cela empêchera le shell de développer $ 1 .

awk '{print $ 1}'

Vous pouvez faire simplement:

wmctrl -lp | grep firefox | awk '{print $1}'
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top