Zahl aus File extrahieren

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Ratten
Beiträge: 14
Registriert: 22.01.2012 18:42:12

Zahl aus File extrahieren

Beitrag von Ratten » 15.03.2012 08:21:11

Hi Leute

Bin gerade etwas am rumprobieren.
Hab auch schon gegooglet aber bin noch nicht auf das gestossen was mir wirklich weiterhelfen kann.

Folgendes:
Ich habe einen gleitkommawert als Prozentangabe in einem File.
Bsp.: "ysdvuösf:=?=dfgblö 35.4% lsfgsdöu"

Aus diesem string muss ich zuverlaessig den gleitkommawert extrahieren sowie als auch die CharPosition des Prozenzeichens sowie auch die Position des beginns der Gleitkommazahl(also der 3 von 35,4).
Ist deswegen wichtig da mehrere Prozentangaben in einer Zeile vorkommen koennen.
Bsp.: "blah blahblahblah =?=blibla 35.4% bliblablubll blah 44,7% drfghdfaghdah 67.8% blahblahblah blah bliblablub"

Hintergrund:
Die Strings(Prozentangaben etc.) werden von dem Programm das sie erzeugt in ein mkfifo geleitet und von dort in ein file geschrieben aus dem ich sie rausziehen muss.

Experimentiere gerade mit "cat floatdigitextract.out | tr -cd [:digit:]" herum aber das extrahiert lediglich ganzzahlen aus Text.
Hat wer einen sinnvollen denkanstoss fuer mich?


Gruss

Ratten

Liffi
Beiträge: 2345
Registriert: 02.10.2004 01:33:05

Re: Zahl aus File extrahieren

Beitrag von Liffi » 15.03.2012 09:10:18

Code: Alles auswählen

perl -ne 'while ($_ =~ /(\d+(\.\d+)?%)/g) {print "$1: $-[0] $+[0]\n"}' filename
Gibt die Zahlen aus, die erste Stelle und die letzte. Funktioniert mit allen Zahlen, die auf % enden und dabei evtl einen Kommaanteil haben (angegeben mit einem '.').

uname
Beiträge: 12408
Registriert: 03.06.2008 09:33:02

Re: Zahl aus File extrahieren

Beitrag von uname » 15.03.2012 09:44:57

Vielleicht so mit "awk":

Code: Alles auswählen

awk '{ gsub(/[^0-9,.%]/," "); for (i=1;i<=length();i++) { j=substr($0,i,1); z[i]=j;if (j == " ") {l=i;}; if (j == "%") {for (k=l+1;k<=i;k++) {printf z[k]}print ";" l+1 }}}' floatdigitextract.out     

Benutzeravatar
Ratten
Beiträge: 14
Registriert: 22.01.2012 18:42:12

Re: Zahl aus File extrahieren

Beitrag von Ratten » 15.03.2012 14:16:42

Hi Leute

Danke fuer eure Antworten
Das Perl-script von Liffi funktioniert absolut perfekt!
Vielen vielen Dank dafuer!!!

Das awk script von uname werd ich mir nochmals genauer anschauen muessen.
Es funktioniert nur auf einem "gereinigten" file da in der floatdigitextract.out auch eine menge ASCII-Sonderzeichen sind aber das hatte ich ja in meinem bsp. oben nicht angegeben.

Bsp:
"M^B^Ablahblahblah | 0.1%"

Bsp als Hex:
0000000 4d5e 425e 415e 6c62 6861 6c62 6861 6c62
0000010 6861 7c20 3020 312e 2025 000a
000001b

Fuer was die Steuerzeichen genau stehen weiss ich nicht 100% aber die ausgabe fder daten bei einem cat findet in einer Zeile statt ohne das ein Zeilenumbruch stattfindet...

...nochmals vielen Dank fuer die antworten!
:hail: :hail:

Gruss

Ratten

Antworten