Pergunta

Eu gostaria de obter pid janela (somente Firefox) de wmctrl, eu tentei wmctrl -lp | grep Firefox | awk -F"" "{print $ 1}" , mas a saída não coincidir com a minha espera. Ajuda 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
  • Neste caso, a minha preferência = 0x012000c4
Foi útil?

Solução

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

Não há necessidade de grep. Awk irá fazer isso. Além disso, o separador de campo padrão é um espaço em branco, assim não há necessidade de especificar que. Além disso, usar aspas simples em torno de seu script awk para que o shell não expande $ 1. É por isso que o seu script falhou. $ 1 se transformou em nada e sua ação awk tornou-se "print", que imprime toda a linha.

Outras dicas

Substituir as aspas em torno {print $1} com aspas simples. Isso vai evitar que o shell expansão $1.

awk '{print $ 1}'

Você pode fazer apenas:

wmctrl -lp | grep firefox | awk '{print $1}'
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top