Ondersteuning > Programmeren

Zoeken in een regel tekst met bash

(1/1)

hansvl:
Als input krijg ik strings als:
  OK - System Uptime is  00:06:32 (6min).|'Uptime Seconds'=392.03s; 'Uptime Minutes'=6min; 'Uptime Hours'=0.1hours;
  'Uptime   Days'=0.00416666666666667days;
of
  OK - System Uptime is 19 days 21:52:25 (28672min).|'Uptime Seconds'=1720345.83s; 'Uptime Minutes'=28672min; 'Uptime
  Hours'=477.866666666667hours; 'Uptime Days'=19.9111111111111days;

In beide gevallen wil ik het aantal dagen na 'Uptime Days' hebben.
In deze voorbeelden dus  0.00416666666666667 of 19.9111111111111

Hoe kan ik in een bash script dat aantal dagen er uit halen?
In het tweede voorbeeld lukt dat met     cut -d ' ' -f 16,17 | tr -d "Days\'=" | tr -d 'd;'
Maar dat werkt weer niet in het eerste voorbeeld.

Bloom:
Quick & dirty:
--- Code: ---echo $invoer|rev|cut -d'=' -f1|rev|tr -d "days;"
--- Einde van code ---
waarbij de variabele invoer je tekst bevat.

Paul Matthijsse:
Of zo:


--- Code: ---#!/bin/bash

str="System Uptime is 19 days 21:52:25 (28672min).|'Uptime Seconds'=1720345.83s; 'Uptime Minutes'=28672min; 'Uptime
Hours'=477.866666666667hours; 'Uptime Days'=19.9111111111111days;"

updays=${str#*Uptime Days\'=}
echo ${updays/days;/}

--- Einde van code ---

Geeft: 19.9111111111111

Navigatie

[0] Berichtenindex

Naar de volledige versie