Awk&的问题grep的

时间:2009-09-10 10:08:59

标签: linux awk grep

我喜欢从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

4 个答案:

答案 0 :(得分:9)

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

不需要grep。 Awk会这样做。默认字段分隔符也是空格,因此无需指定。另外,在awk脚本周围使用单引号,这样shell就不会扩展$ 1。这就是你的脚本失败的原因。 $ 1变成了什么,你的awk动作变成了“print”,打印出整条线。

答案 1 :(得分:1)

用单引号替换{print $1}周围的双引号。这将阻止shell扩展$1

答案 2 :(得分:1)

awk'{print $ 1}'

答案 3 :(得分:0)

你可以这样做:

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