xdpyinfo | grep dimensions
的输出是
dimensions: 2560x1600 pixels (676x423 millimeters)
通过管道 sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/')
确实提取以像素为单位的尺寸 ( 2560x1600
),但不适用于左括号。
如何使用 sed 获取以毫米为单位的尺寸(即 646x423
)?
最佳答案
您可以使用
sed -r 's/.*\(([0-9]+x[0-9]+).*/\1/'
查看online demo .
详细信息
.*
- 任意 0+ 尽可能多的字符\(
- 文字(
(在 POSIX ERE 风格中,您与-r
一起使用)([0-9]+x[0-9]+)
- 第 1 组(稍后用\1
反向引用引用):1+ 位,x
, 1+数字.*
- 任意 0+ 尽可能多的字符
请注意,您实际上可以在此处省略 ^
和 $
,因为有一个整行与 sed
匹配。
这里是使用 POSIX BRE 正则表达式的等效解决方案:
sed 's/.*(\([0-9][0-9]*x[0-9][0-9]*\).*/\1/'
请注意,(
表示 POSIX BRE 中的文字 (
字符,\(...\)
在此定义捕获组由于 POSIX BRE 不支持 +
量词,您可以使用 [0-9][0-9]*
代替(1 位数字和 0+ 位数字)。
关于regex - 如何使用 sed 提取以 '(' 开头的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45445381/