sed正则表达式找到显示器分辨率

时间:2013-03-19 10:04:41

标签: sed grep

使用xrandr | grep '*'我想找到我们网络上所有显示器的x分辨率。这是为了帮助在其他脚本中自动放置xterms。

我们的一些系统正在运行redhat 6.4和其他redhat 5.8,而xrandr的结果因redhat版本而异

对于redhat 6.4 xrandr | grep '*'返回

1680x1050 60.0*+

和redhat 5.8

*0 1680 x 1050 ( 474mm x 303mm ) *50

我尝试了xrandr | grep '*' | sed 's/\s+\(\d\{4\}\)\s*x\s*\d+/\1/',但这会返回与上面突出显示的5.8和6.4相同的字符串。

两种情况下所需的输出为1680

任何提示?

1 个答案:

答案 0 :(得分:1)

试试这一行:

xrandr|grep -Po '\d+(?=\s*x.*\*.*)'

示例:

kent$ echo '1680x1050 60.0*+
*0 8888 x 1050 ( 474mm x 303mm ) *50
without star'|grep -Po '\d+(?=\s*x.*\*.*)'
1680
8888

在上面的示例中,我将一个X更改为8888并添加了不带*的oneline,以表明它适用于这些情况。

您可以使用 xdpyinfo

尝试另一种方法
 xdpyinfo| grep dimens|grep -oP '(?<=\s)\d+'