문제

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}'
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top