grep
můžete přeskočit a získejte to za jediný awk
:
xrandr | awk 'NF >= 3 && /[0-9]+x[0-9]+/ {sub(/[+-].*/, "", $3); print $3}'
1920x1200
1920x1200
primary
1029x1200
Alternativní single gnu grep
řešení:
xrandr | grep -oP 'connected\h+\K(\d+x\d+|\S+)'
(.*\d+x\d+)*^(?![\+]+\d\+\d)
vzor porovnává a zachycuje do skupiny 1 volitelnou posloupnost jakéhokoli nula nebo více znaků jiných než znaků zalomení řádků, pokud možno, pak 1+ číslice, x
, 1+ číslice a pak vyžaduje začátek pozice řetězce (v důsledku toho vzor vždy selže! ) a zajišťuje, že neexistuje jeden nebo více +
znaky, číslice, +
a číslici hned napravo od aktuální polohy. Toto vypadá jako velmi poškozený vzor, který nikdy neodpovídá žádnému řetězci.
Vaši logiku lze implementovat jako
xandr | grep -oP '\b\d+x\d+(?!(?:\+\d+\+)?\d)'
Podívejte se na online demo a regex demo.
Podrobnosti :
-oP
- výstup se pouze shoduje a povolí modul regulárních výrazů PCRE\b\d+x\d+(?!(?:\+\d+\+)?\d)
:\b
- hranice slova\d+
- jedna nebo více číslicx
-x
\d+
- jedna nebo více číslic(?!(?:\+\d+\+)?\d)
- negativní výhled, který selže, pokud hned napravo od aktuálního umístění existuje(?:\+\d+\+)?
- volitelná sekvence+
, jedna nebo více číslic a+
\d
- číslice.
Magento 2 - Po přidání do košíku se stránka košíku zobrazuje prázdná
Proč wprintf v Linuxu přepisuje ruský text v Unicode do latinky?