Проблема с Awk & Grep - PullRequest
       15

Проблема с Awk & Grep

3 голосов
/ 10 сентября 2009

Мне нравится получать pid окна (только firefox) из wmctrl, я пробовал wmctrl -lp | grep Firefox | awk -F "" "{print $ 1}" , но вывод не соответствует моим ожиданиям. Помогите пожалуйста.

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
  • В этом случае мой предпочтение = 0x012000c4

Ответы [ 4 ]

9 голосов
/ 10 сентября 2009
wmctrl -lp | awk '/Firefox/ { print $1 }'

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

1 голос
/ 10 сентября 2009

awk '{print $ 1}'

1 голос
/ 10 сентября 2009

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

0 голосов
/ 10 сентября 2009

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

wmctrl -lp | grep firefox | awk '{print $1}'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...