while read line do sed: Problem ab Zeile 10

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
mojorianer
Beiträge: 10
Registriert: 16.03.2011 16:57:13

while read line do sed: Problem ab Zeile 10

Beitrag von mojorianer » 08.07.2011 01:22:22

Hallo,

ich habe ein Skript geschrieben, welches jede Zeile eines MySQL Outfile ausliest und an bestimmte Platzhalter schreiben soll.

Bis Zeile bzw. Platzhalter 9 funktioniert es soweit.

Skript

Code: Alles auswählen

#!/bin/bash
cp /root/script/tt_template /tmp/tt_result
ZEILE=0
while read line; 
do			sed -e "s/platz$ZEILE/$line/g" /tmp/tt_result > /tmp/tt_result2
			mv /tmp/tt_result2 /tmp/tt_result
			ZEILE=$(($ZEILE+1));
done < /tmp/query-result3
Das MySQL outfile /tmp/query-result3

Code: Alles auswählen

25.00000000
8.00000000
41.00000000
35.00000000
37.00000000
...
2.10583995
1.3840.17082645
5.48428009
\N


Das Template /root/script//tt_template

Code: Alles auswählen

Ticketanzahl

Audio: platz0
Web: platz1
Intern: platz2
Recording: platz3
Rechnung: platz4
Change: platz5
...
Recording: platz17
Rechnung: platz18
Change: platz19
Security: platz20

Ergebnis /tmp/tt_result

Code: Alles auswählen

Ticketanzahl

Audio: 25.00000000
Web: 8.00000000
Intern: 41.00000000
Recording: 35.00000000
Rechnung: 37.00000000
Change: 7.00000000
Security: 0.00000000

SUM

Audio: 9.14999998
Web: 3.41666666
Intern: 16.04999997
Recording: 8.000000000
Rechnung: 8.000000001
Change: 8.000000002
Security: 8.000000003

AVG

Audio: 8.000000004
Web: 8.000000005
Intern: 8.000000006
Recording: 8.000000007
Rechnung: 8.000000008
Change: 8.000000009
Security: 41.000000000
Ich stehe irgendwie auf dem Schlauch.

Vielen Dank

Mojo

deberik
Beiträge: 1177
Registriert: 30.09.2009 13:27:23

Re: while read line do sed: Problem ab Zeile 10

Beitrag von deberik » 08.07.2011 04:06:24

Das Problem: platz17 wird als Variable platz1 mit einer 7 hinten dran interpretiert; platz18 als Variable platz1 mit einer 8; platz20 als platz2 mit einer 0.

Hier sieht man das ganz gut:

Code: Alles auswählen

Web: 8.00000000 <- platz1
Intern: 41.00000000 <- platz2
Recording: 8.000000007 <- platz17
Rechnung: 8.000000008 <- platz18
Change: 8.000000009 <- platz19
Security: 41.000000000 <- Platz20
Platzhalter umbenennen wäre eine Lösung.

Oder du änderst deinen sed-Befehl, indem du \$ nach $ZEILE einfügst:

Code: Alles auswählen

sed -e "s/platz$ZEILE\$/$line/g"
\$ steht für das Ende einer Zeile.
Debians Paketbeschreibungen übersetzen? Hilf mit!

mojorianer
Beiträge: 10
Registriert: 16.03.2011 16:57:13

Re: while read line do sed: Problem ab Zeile 10

Beitrag von mojorianer » 08.07.2011 12:56:42

Es läuft :D

Vielen Dank

Mojo

Antworten