SED正则表达式来找到显示器的分辨率(sed regex to find monitor resol

2019-10-17 21:05发布

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

我们的一些系统都是在redhat 6.4运行以及其他在redhat 5.8和xrandr的结果取决于红帽版本不同

红帽6.4 xrandr | grep '*' xrandr | grep '*'的回报

1680x1050 60.0*+

和红帽5.8

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

我试图xrandr | grep '*' | sed 's/\s+\(\d\{4\}\)\s*x\s*\d+/\1/' xrandr | grep '*' | sed 's/\s+\(\d\{4\}\)\s*x\s*\d+/\1/' xrandr | grep '*' | sed 's/\s+\(\d\{4\}\)\s*x\s*\d+/\1/'但这返回如上强调了5.8和6.4相同的字符串。 所期望的输出是1680在这两种情况下

任何提示?

Answer 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+'


文章来源: sed regex to find monitor resolution
标签: sed grep