문제
Wmctrl에서 창 pid (Firefox)를 얻는 것을 좋아합니다. 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는 그렇게 할 것입니다. 또한 기본 필드 분리기는 공백이므로이를 지정할 필요가 없습니다. 또한 쉘이 $ 1을 확장하지 않도록 AWK 스크립트 주위에 단일 따옴표를 사용하십시오. 그래서 스크립트가 실패했습니다. $ 1은 아무것도 아니었고 당신의 어색한 행동은 "인쇄"가되었으며, 이는 전체 라인을 인쇄했습니다.
다른 팁
주변의 이중 인용문을 교체하십시오 {print $1}
단일 따옴표로. 쉘이 팽창하지 못하게됩니다 $1
.
awk '{print $ 1}'
당신은 그냥 할 수 있습니다 :
wmctrl -lp | grep firefox | awk '{print $1}'
제휴하지 않습니다 StackOverflow