的xdpyinfo | grep dimensions
輸出是如何提取與sed的開始與圖案「(」
dimensions: 2560x1600 pixels (676x423 millimeters)
配管它通過sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/')
並提取像素(尺寸2560x1600
),但不會與開口括號工作。
如何使用sed?得到milimiters尺寸(即646x423
)
的xdpyinfo | grep dimensions
輸出是如何提取與sed的開始與圖案「(」
dimensions: 2560x1600 pixels (676x423 millimeters)
配管它通過sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/')
並提取像素(尺寸2560x1600
),但不會與開口括號工作。
如何使用sed?得到milimiters尺寸(即646x423
)
如果你想提取它在單個命令,然後你可以用這個gnu grep
使用匹配復位正則表達式,即\K
替換現有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;}'
沒有安裝'ggrep',但第二個選項不輸出任何內容。 – nightcod3r
對於'sed',我建議使用'xdpyinfo | sed -nE'/ dimensions/{s /.* \(([0-9] + x [0-9] +)。*/\ 1/p; q;}''並減少'grep' – anubhava
Now你的更完整的目標是完整的問題。 – nightcod3r
您可以使用
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+位)。
用反斜槓轉義括號。 –