Вопрос
Мне нравится получать идентификатор окна (только 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.
Решение
wmctrl -lp | awk '/Firefox/ { print $1 }'
Нет необходимости в grep.Awk сделает это.Кроме того, разделителем полей по умолчанию является пробел, поэтому его не нужно указывать.Кроме того, заключите скрипт awk в одинарные кавычки, чтобы оболочка не расширяла $1.Вот почему ваш сценарий не удался.$1 превратился в ничто, и вашим действием awk стало «print», которое печатает всю строку.
Другие советы
Замените двойные кавычки вокруг {print $1}
с одинарными кавычками.Это предотвратит расширение оболочки. $1
.
awk '{напечатать $1}'
Вы можете сделать просто:
wmctrl -lp | grep firefox | awk '{print $1}'
Не связан с StackOverflow