Absolutwert (Betrag) von Zahlen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
fragenfrager
Beiträge: 658
Registriert: 31.12.2003 08:47:15

Absolutwert (Betrag) von Zahlen

Beitrag von fragenfrager » 17.03.2014 17:02:48

gesucht: Absolutwert zu erzeugten Daten
Daten:

Code: Alles auswählen

5
17
24
22
40
26
...
Möchte mir jetzt ein script basteln welches jede Zeile durchgeht, mit der vorherigen Zeile vergleicht und mir dann den Absolutwert wiedergibt. Für den oberen Fall wäre das gesuchte Resultat also

Code: Alles auswählen

12
7
2
18
14
...
In der .bcrc hab ich folgendes eingetragen

Code: Alles auswählen

define abs(x) { if ( x<0 ) return -x; return x }
Jetzt brauch ich noch eine Methode mit der ich die Zeilen rausfischen kann. Es besteht auch die Möglichkeit die Daten gleich abzugreifen bevor sie geschrieben werden allerdings komm ich nicht drauf:
So erzeuge ich diese Daten:

Code: Alles auswählen

#!/bin/bash
while :
do
sleep 10
ZUFALLSZAHL=$(seq 1 100 | sort -R --random-source=/dev/random | head -1)
echo $ZUFALLSZAHL >> DATEN
done

bullgard
Beiträge: 1642
Registriert: 14.09.2012 23:03:01

Re: Absolutwert (Betrag) von Zahlen

Beitrag von bullgard » 17.03.2014 17:26:26

fragenfrager hat geschrieben: Möchte mir jetzt ein script basteln welches jede Zeile durchgeht, mit der vorherigen Zeile vergleicht und mir dann den Absolutwert wiedergibt. Für den oberen Fall wäre das gesuchte Resultat also

Code: Alles auswählen

12
7
2
18
14
...
Nö. Das ist nicht der Absolutwert. Guck mal in die Wikipedia nach dem Stichwort "Absolutwert".
Gruß
bullgard

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: Absolutwert (Betrag) von Zahlen

Beitrag von Cae » 17.03.2014 18:02:37

Auch wenn dein Beispiel etwas komplett anderes sagt als der Titel, denke ich, dass ersteres gemeint ist. Ich wuerde awk nehmen:

Code: Alles auswählen

$ cat >numbers
3  
7
12
54 
56
76
82
$ awk '{print($1-b);b=$1;}' <numbers 
3
4
5
42
2
20
6
$ 
Beachte, dass der erste Wert der Ausgabe "3" ist, weil "der Wert davor" als 0 angenommen wird. Bei Bedarf kann man das vermeiden.

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Antworten