xdpyinfo | grep dimensions的输出是
dimensions: 2560x1600 pixels (676x423 millimeters)通过sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/')进行管道传输确实提取了以像素为单位的维度(2560x1600),但不适用于开括号。
如何用sed获得毫米波(即646x423)的尺寸?
发布于 2017-08-01 19:12:35
如果要在单个命令中解压缩它,则可以使用match reset regex (即grep )替换现有的gnu grep命令。
xdpyinfo | grep -oP 'dimensions:.*\(\K\d+x\d+'
676x423以上将需要gnu grep。如果这是不可用的,那么您可以使用这个grep与另一个grep。
xdpyinfo | grep -oE 'dimensions:.*\([0-9]+x[0-9]+' | grep -oE '[0-9]+x[0-9]+$'如果您必须使用sed,那么只需使用一个sed命令,就可以减少grep
xdpyinfo | sed -nE '/dimensions/{s/.*\(([0-9]+x[0-9]+).*/\1/p;q;}'发布于 2017-08-01 18:40:57
你可以用
sed -r 's/.*\(([0-9]+x[0-9]+).*/\1/'看一个在线演示。
详细信息
.* --尽可能多地使用0+字符\( -一个文字( (在-r中使用的POSIX版本)([0-9]+x[0-9]+) -第1组(稍后使用\1反向引用):1+位数、x、1+digits.* --尽可能多地使用0+字符注意,您实际上可以在这里省略^和$,因为sed有一个完整的行匹配。
下面是使用POSIX BRE正则表达式的等效解决方案:
sed 's/.*(\([0-9][0-9]*x[0-9][0-9]*\).*/\1/'注意,(表示POSIX中的文字(字符,\(...\)在这里定义一个捕获组。由于POSIX不支持+量词,所以可以只使用[0-9][0-9]* (1位数和0+位数)。
https://stackoverflow.com/questions/45445381
复制相似问题