2009-09-10 3 views
3

Мне нравится получать окно pid (только firefox) из wmctrl, я попробовал wmctrl -lp | grep Firefox | awk -F "" "{print $ 1}", но вывод не соответствует моему ожиданию. Помоги пожалуйста.Проблема с 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 
  • В этом случае, если моя = 0x012000c4 предпочитают

ответ

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

Нет необходимости Grep. Awk сделает это. Также разделитель полей по умолчанию - это пробел, поэтому его не нужно указывать. Кроме того, используйте одиночные кавычки вокруг вашего скрипта awk, чтобы оболочка не расширила $ 1. Вот почему ваш скрипт не удался. $ 1 превратился в ничто, и ваше действие awk стало «печатью», которая печатает всю строку.

1

Заменить двойные кавычки вокруг {print $1} с одинарными кавычками. Это предотвратит расширение оболочки от $1.

+0

Уважаемый сэр, что это проблема с моим ответом, что заставило вас downvote это? – 2009-09-10 10:15:17

0

Вы можете сделать только:

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

Awk - это образец, соответствующий языку. Нет необходимости использовать grep. – dmckee

Смежные вопросы