Domanda

Mi piace ottenere window pid (solo firefox) da wmctrl, ho provato wmctrl -lp | grep Firefox | awk -F " & Quot; " {print $ 1} " ma l'output non corrisponde alle mie aspettative. Aiuto per favore.

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
  • In questo caso, preferisco = 0x012000c4
È stato utile?

Soluzione

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

Non è necessario grep. Awk lo farà. Anche il separatore di campo predefinito è uno spazio, quindi non è necessario specificarlo. Inoltre, usa virgolette singole intorno al tuo script awk in modo che la shell non espanda $ 1. Ecco perché la tua sceneggiatura non è riuscita. $ 1 non si è trasformato in nulla e la tua azione awk è diventata "stampa", che stampa l'intera riga.

Altri suggerimenti

Sostituisci le doppie virgolette attorno a {print $ 1} con virgolette singole. Ciò impedirà alla shell di espandere $ 1 .

awk '{print $ 1}'

Puoi fare solo:

wmctrl -lp | grep firefox | awk '{print $1}'
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top