Pregunta

Me gusta obtener la ventana pid (solo Firefox) de wmctrl, probé wmctrl -lp | grep Firefox | awk -F " " " {imprimir $ 1} " pero la salida no coincide con mi expectativa. Ayuda por favor.

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
  • En este caso mi prefiero = 0x012000c4
¿Fue útil?

Solución

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

No hay necesidad de grep. Awk hará eso. Además, el separador de campo predeterminado es el espacio en blanco, por lo que no es necesario especificarlo. Además, use comillas simples alrededor de su script awk para que el shell no expanda $ 1. Es por eso que tu guión falló. $ 1 se convirtió en nada y su acción awk se convirtió en " impresión " ;, que imprime toda la línea.

Otros consejos

Reemplace las comillas dobles alrededor de {print $ 1} con comillas simples. Eso evitará que el shell expanda $ 1 .

awk '{print $ 1}'

Puedes hacerlo solo:

wmctrl -lp | grep firefox | awk '{print $1}'
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top