2009-09-10 7 views
3

J'aime obtenir la fenêtre pid (seulement firefox) de wmctrl, j'ai essayé wmctrl -lp | grep Firefox | awk -F "" "{print $ 1}" mais la sortie ne correspond pas à mes attentes. Aidez-moi, s'il vous plaît.Problème avec Awk & Grep

[email protected]# 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 [email protected]: ~/.qlive/conference 
0x012000c4 0 12134 beer-laptop Common threads: Awk by example, Part 1 - Mozilla Firefox 
[email protected]# 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, mon préfère = 0x012000c4

Répondre

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

Pas besoin de grep. Awk va le faire. Le séparateur de champs par défaut est également un espace, il n'est donc pas nécessaire de le spécifier. En outre, utilisez des guillemets simples autour de votre script awk afin que le shell ne développe pas $ 1. C'est pourquoi votre script a échoué. $ 1 transformé en rien et votre action awk est devenu "impression", qui imprime toute la ligne.

1

Remplacez les guillemets par des guillemets simples autour de {print $1}. Cela empêchera l'expansion du shell $1.

+0

Cher Monsieur, quel est le problème avec ma réponse qui vous a downvote il? –

0

Vous pouvez le faire:

wmctrl -lp | grep firefox | awk '{print $1}' 
+1

Awk est un motif correspondant languge. Pas besoin d'utiliser grep. – dmckee

Questions connexes