www.mikrocontroller.net

Forum: PC-Programmierung Frage zu einem kleinen Perl-Script


Autor: Jonny_B (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich habe eine Datei (file.dat) mit folgendem Inhalt:

1 25.00 545.00 285.00 #N/A 1162 116.26 99.21 0.5068 0.0074 0.0004 0.0003 
12
2 25.00 545.00 335.00 #N/A 1207 120.89 99.03 0.5085 0.0064 0.0004 0.0003 
16
3 25.00 545.00 385.00 #N/A 1415 141.65 99.18 0.5068 0.0063 0.0003 0.0002 
16
4 25.00 545.00 435.00 #N/A 1381 138.18 99.55 0.5133 0.0065 0.0003 0.0002 
16
5 25.00 545.00 485.00 #N/A 1224 122.63 99.47 0.5183 0.0064 0.0004 0.0003 
12
6 25.00 545.00 535.00 #N/A 1245 124.55 99.57 0.5219 0.0065 0.0004 0.0003 
16
7 25.00 545.00 585.00 #N/A 1217 121.83 99.11 0.5195 0.0062 0.0003 0.0002 
16
8 25.00 545.00 635.00 #N/A 1330 133.07 99.17 0.5204 0.0065 0.0004 0.0002 
19
9 25.00 545.00 685.00 #N/A 1330 133.07 99.18 0.5216 0.0066 0.0004 0.0003 
16

Ich möchte nun eine zweite Datei (label.dat) haben, in der folgendes 
steht:

set label "0.5068" at 545.00,285.00
set label "0.5085" at 545.00,335.00
set label "0.5068" at 545.00,385.00
set label "0.5133" at 545.00,435.00
set label "0.5183" at 545.00,485.00
set label "0.5219" at 545.00,535.00
set label "0.5195" at 545.00,585.00
set label "0.5204" at 545.00,635.00
set label "0.5216" at 545.00,685.00


Also: in die Klammer kommt der Wert aus Spalte 9, hinter dem "at" stehen 
die Spalten 3 und 4.

Mit Perl soll das so gehen:

perl -ane 'print "set label \"($F[9])\" at $F[3],$F[4]\n"' file.dat > 
label.plt

Aber ich bekomme immer einen Fehler angezeigt:

can't find string terminator "'" anywhere before EOF at -e line 1.



Gruß
Jonny_B

Autor: Uhu Uhuhu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Unter welchen Betriebsystem machst du das denn?

Autor: Werner B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne zu testen...  ==>;<==

perl -ane 'print "set label \"($F[9])\" at $F[3],$F[4]\n";' 
file.dat>label.plt

Autor: Jonny_B (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Unter Windows NT .-(


Jonny_B

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jonny_B wrote:
> Unter Windows NT .-(

Na dann funktioniert die *nix-Syntax für den Kommandointerpreter 
natürlich nicht - der hat nämlich keine Ahnung, was ' bedeutet...

Schreib am besten eine .pl-Datei, die dein Programm enthält, dann mußt 
du dich nicht mit mehrfach escapten Anführungszeichen rumärgern.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mal eine halbe Stunde lang vergeblich versucht einem Programm 
in einer Batch-Datei ein "%" als Parameter zu übergeben, seitdem habe 
ich die Windows-Shell aufgegeben.

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das muß man verdoppln, dann gehts. Ich hab damit so meine Erfahrungen, 
vermisse den Scheiß aber nicht, seit ich unter Windows mit Scripthost 
und JavaScript arbeite.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, ging eben nicht...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.