Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何使用sed提取以';(';_Regex_Sed_Pattern Matching - Fatal编程技术网

Regex 如何使用sed提取以';(';

Regex 如何使用sed提取以';(';,regex,sed,pattern-matching,Regex,Sed,Pattern Matching,xdpyinfo | grep维度的输出为 dimensions: 2560x1600 pixels (676x423 millimeters) 通过管道将其通过sed-r/^[^0-9]*([0-9]+x[0-9]+).$/\1/')确实提取了以像素为单位的尺寸(2560x1600),但不能使用左括号 如何使用sed以毫米为单位获取尺寸(即646x423),您可以使用 sed -r 's/.*\(([0-9]+x[0-9]+).*/\1/' 看一看 详细信息 *-尽可能多的任意

xdpyinfo | grep维度的输出为

  dimensions:    2560x1600 pixels (676x423 millimeters)
通过管道将其通过sed-r/^[^0-9]*([0-9]+x[0-9]+).$/\1/')
确实提取了以像素为单位的尺寸(
2560x1600
),但不能使用左括号

如何使用sed以毫米为单位获取尺寸(即
646x423
),您可以使用

sed -r 's/.*\(([0-9]+x[0-9]+).*/\1/'
看一看

详细信息

  • *
    -尽可能多的任意0个字符
  • \(
    -a literal
    (在POSIX中,您使用的是
    -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位以上).

如果您想在单个命令中提取它,那么您可以使用match reset regex将现有的
grep
命令替换为
gnu grep
,即
\K

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]+$'
xdpyinfo | sed -nE '/dimensions/{s/.*\(([0-9]+x[0-9]+).*/\1/p;q;}'
如果必须使用
sed
,则使用单个sed命令如下,并减少
grep

xdpyinfo | grep -oE 'dimensions:.*\([0-9]+x[0-9]+' | grep -oE '[0-9]+x[0-9]+$'
xdpyinfo | sed -nE '/dimensions/{s/.*\(([0-9]+x[0-9]+).*/\1/p;q;}'

没有安装
ggrep
,但是第二个选项没有输出任何内容。对于
sed
,我建议使用
xdpyinfo | sed-nE'/dimensions/{s/*\([0-9]+x[0-9]+)./\1/p;q;}“
和cut-down
grep
现在你的问题更完整了,针对的是完整的问题。出于好奇,你将如何用这种格式提取像素模式(2560x1600)中的维度?
xdpyinfo | sed-nE'/dimensions/{s/*([0-9]+x[0-9]+)./\1/p;q;}'
应该适用于这一点。用反斜杠转义括号。