Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Zoeken in een regel tekst met bash  (gelezen 2272 keer)

Offline hansvl

  • Lid
Zoeken in een regel tekst met bash
« Gepost op: 2022/11/03, 11:37:38 »
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.

Offline Bloom

  • Lid
Re: Zoeken in een regel tekst met bash
« Reactie #1 Gepost op: 2022/11/03, 12:33:12 »
Quick & dirty:echo $invoer|rev|cut -d'=' -f1|rev|tr -d "days;"waarbij de variabele invoer je tekst bevat.

Re: Zoeken in een regel tekst met bash
« Reactie #2 Gepost op: 2022/11/04, 16:26:41 »
Of zo:

#!/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;/}

Geeft: 19.9111111111111
« Laatst bewerkt op: 2022/11/04, 17:54:49 door Paul Matthijsse »