Permalänk
Medlem

Någon duktig på sed?

Har ett problem där jag behöver plocka ut vilken version av distributionen som är installerad på en server med ett kommando, just nu på RHEL 3,4,5 och Ubuntu.
Det går att finna versions nummer i /etc/issue, så jag går på det.

Exempel på strängar:
1. "Red Hat Enterprise Linux ES release 3 (Taroon Update 9)"
2. "Ubuntu 10.04.1 LTS \n \l"
3. "Red Hat Enterprise Linux Server release 5.5 (Tikanga)"

Min nuvarande lösning: cat /etc/issue | head -n1 | sed 's/[^0-9.]//g'

Men den fungerar inte på första strängen då output blir "39", och jag vill bara ha "3".

Tack på förhand!

Permalänk

Kanske inte den snyggaste lösningen men den fungerar:
cat /etc/issue | head -n1 | sed 's/...$//; s/[^0-9.]//g'

/Peter

Permalänk
Medlem

cat /etc/issue | head -n1 | sed 's/(.*)//; s/[^0-9.]//g'

Funkar också...

Visa signatur

Datorer - M1 MacBook Pro 14"
Hörlurssystem - Scarlett 4i4 / Objective2 / Beyerdynamic DT 770
Ljudsystem - NAD C356BEE > DALI Mentor 6
Bilpark - Porsche 718 Spyder

Permalänk
Medlem

Om du verkligen bara vill ha första siffran så använd något i stil med

sed 's/\([^0-9]*\)\([0-9]\).*/\2/'

Vill du ha fler siffror och eventuellt point-versioner och builds så använd något i stil med

sed 's/\([^0-9]*\)\([0-9a-z.-]*\).*/\2/'

som plockar ut den första strängen som ser ut som ett versionsnummer (börjar med en siffra och innehåller siffror, gemener, komma och/eller bindesstreck).

Permalänk
Medlem

Tack för alla svar! Märker att jag behöver förbättra mina sed kunskaper markant.