Ik loop een beetje vast met reguliere expressies in de Bash shell van Raspbian. Ik ben er sowieso al geen kei in en vind het dan ook al heel wat dat ik wel enigszins vooruit ben gekomen met goed zoeken via Google, lezen en uitproberen.
Wat ik graag wil doen is een bash scriptje schrijven die een overzicht geeft van de beschikbare resoluties die ik voor mijn RealVNC virtual desktop heb ingesteld, daar een resolutie uit kunnen kiezen en dan door het script laten instellen.
Dit is de output van xrandr in de virtual desktop sessie:
Oorspronkelijk wilde ik eerst proberen de huidige ingestelde resolutie er uit te filteren. De ingestelde resolutie wordt gemarkeerd met een asterisk aan het begin en direct voor de refresh waarde.
Via Google was ik uitgekomen op https://www.linode.com/do...and-filter-text-with-grep die mij al een flinke stap voorwaarts hielp om de reguliere expressies wat beter te snappen en zelf te proberen reguliere expressies op te bouwen.
Eerst dacht ik dat ik een expressie op de hele regel moest toepassen:
Hoewel ik daarmee voor mij zelf bewees dan de juiste regel naar voren te krijgen was de output iets te veel:
Ik ontdekte dat ik alle expressies na de resoluties weg kon laten om die gegevens niet in de output te krijgen. Dit werd toen de opdrachtregel / expressie:
En daarmee kreeg ik dus:
Al een stuk beter dus.
Maar ik wil graag alleen de resolutie van de regel die aanduid welke resolutie er staat ingesteld. En daar loop ik vast, want als ik ook de expressie vóór de resolutie weg haal:
Dan krijg ik alle resoluties uit het lijstje ipv alleen de actieve:
Dit komt toevallig ook wel erg van pas voor mijn script, maar is dus nog niet de oplossing om alleen de actieve resolutie weer te geven.
Ik zou dus minimaal alleen de actieve resolutie uit het lijstje in een variabele of array willen kunnen stoppen.
Hulp / uitleg hoe ik een array met de index-nummers en hun bijbehorende resoluties kan maken is ook erg welkom overigens, maar daar heb ik desnoods wel omweggetjes voor in gedachten.
Wat ik graag wil doen is een bash scriptje schrijven die een overzicht geeft van de beschikbare resoluties die ik voor mijn RealVNC virtual desktop heb ingesteld, daar een resolutie uit kunnen kiezen en dan door het script laten instellen.
Dit is de output van xrandr in de virtual desktop sessie:
Bash:
1
2
3
4
5
6
7
8
9
| SZ: Pixels Physical Refresh *0 1280 x 720 ( 325mm x 183mm ) *0 1 1280 x 1024 ( 325mm x 260mm ) 0 2 1024 x 768 ( 260mm x 195mm ) 0 3 800 x 600 ( 203mm x 152mm ) 0 Current rotation - normal Current reflection - none Rotations possible - normal Reflections possible - none |
Oorspronkelijk wilde ik eerst proberen de huidige ingestelde resolutie er uit te filteren. De ingestelde resolutie wordt gemarkeerd met een asterisk aan het begin en direct voor de refresh waarde.
Via Google was ik uitgekomen op https://www.linode.com/do...and-filter-text-with-grep die mij al een flinke stap voorwaarts hielp om de reguliere expressies wat beter te snappen en zelf te proberen reguliere expressies op te bouwen.
Eerst dacht ik dat ik een expressie op de hele regel moest toepassen:
Bash:
1
| xrandr --current | grep -Eo "^\*[0-9]{1,2}[ ]+[0-9]+ x [0-9]+[ ]+\( [0-9m]+ x [0-9m]+ \)[ ]+\*[0-9]{1,3}" |
Hoewel ik daarmee voor mij zelf bewees dan de juiste regel naar voren te krijgen was de output iets te veel:
Bash:
1
| *0 1280 x 720 ( 325mm x 183mm ) *0 |
Ik ontdekte dat ik alle expressies na de resoluties weg kon laten om die gegevens niet in de output te krijgen. Dit werd toen de opdrachtregel / expressie:
Bash:
1
| xrandr --current | grep -Eo "^\*[0-9]{1,2}[ ]+[0-9]+ x [0-9]+" |
En daarmee kreeg ik dus:
Bash:
1
| *0 1280 x 720 |
Al een stuk beter dus.
Maar ik wil graag alleen de resolutie van de regel die aanduid welke resolutie er staat ingesteld. En daar loop ik vast, want als ik ook de expressie vóór de resolutie weg haal:
Bash:
1
| xrandr --current | grep -Eo "[0-9]+ x [0-9]+" |
Dan krijg ik alle resoluties uit het lijstje ipv alleen de actieve:
Bash:
1
2
3
4
| 1280 x 720 1280 x 1024 1024 x 768 800 x 600 |
Dit komt toevallig ook wel erg van pas voor mijn script, maar is dus nog niet de oplossing om alleen de actieve resolutie weer te geven.
Ik zou dus minimaal alleen de actieve resolutie uit het lijstje in een variabele of array willen kunnen stoppen.
Hulp / uitleg hoe ik een array met de index-nummers en hun bijbehorende resoluties kan maken is ook erg welkom overigens, maar daar heb ik desnoods wel omweggetjes voor in gedachten.