Wer kann mir bei einem Perl oder Bash Script helfen?
Pascal Schmidt
- perl
hallo,
ich bräuchte ein Script in Bash oder Perl geschrieben das folgendes macht:
aus einer datei "daten.txt" (kommaseparierte datei)
dateiinhalt:
1, Wert1, Zeichen2, ...
2, Wert3, Zeichen4, ...
soll jeweils drei zeichen nach dem ersten komma (also zb Wer) und die ersten drei zeichen nach dem zweiten komma (also zb Zei) in eine Variable (inhalt: 1, WerZei, Wert1, Zeichen2, ...)
gespeichert werden und die Zeile entsprechend in eine neue Datei "output.txt" abgespeichert.
kann mir jemand einen tipp geben womit das leichter geht (bash oder perl) und wie ich das anstelle?
Der ganze ablauf soll solange durchlaufen, bie die datei "daten.txt" abgearbeitet ist.
gruss
Pascal
Hallo Pascal,
ich bräuchte ein Script in Bash oder Perl geschrieben das folgendes macht:
Ich empfehle Dir Perl, da Perl spezielle Funktionen für genau solche Probleme zur Verfügung stellt.
aus einer datei "daten.txt" (kommaseparierte datei)
Zum Öffnen einer Datei verwendet man
open, siehe perldoc open,
zum Schliessen
close, siehe perldoc close
dateiinhalt:
1, Wert1, Zeichen2, ...
Einlesen von Zeilen mit dem Zeileneingabeoperator <>.
2, Wert3, Zeichen4, ...
soll jeweils drei zeichen nach dem ersten komma (also zb Wer) und die ersten drei zeichen nach dem zweiten komma (also zb Zei) in eine Variable (inhalt: 1, WerZei, Wert1, Zeichen2, ...)
Du könntest die Zeile mit
split, siehe perldoc split
an einem Trennzeichen in bequeme Häppchen zerteilen.
substr, siehe perldoc substr
wiederum kann Dir helfen, Teilstrings zu extrahieren,
gespeichert werden und die Zeile entsprechend in eine neue Datei "output.txt" abgespeichert.
print, siehe perldoc print
kann eine Liste von Strings ausgeben, auch in eine Datei
kann mir jemand einen tipp geben womit das leichter geht (bash oder perl) und wie ich das anstelle?
Mit Perl.
Der ganze ablauf soll solange durchlaufen, bie die datei "daten.txt" abgearbeitet ist.
Selbstverständlich verfügt Perl über Schleifenkonstrukte. In Deinem Fall wäre
while, siehe perldoc while
angemessen.
Freundliche Grüsse,
Vinzenz
Hallo,
vielleicht hilft dir schon mal "man cut".
Bert
Hi,
ich bräuchte ein Script in Bash oder Perl geschrieben das folgendes macht:
aus einer datei "daten.txt" (kommaseparierte datei)
dateiinhalt:
1, Wert1, Zeichen2, ...
2, Wert3, Zeichen4, ...soll jeweils drei zeichen nach dem ersten komma (also zb Wer) und die ersten drei zeichen nach dem zweiten komma (also zb Zei) in eine Variable (inhalt: 1, WerZei, Wert1, Zeichen2, ...)
Für CSV ist AWK meist am passendsten (hier: GNU-Awk):
$ echo -e "1, Wert1, Zeichen2,\n2, Wert2, Zeichen2,foobar\n3, Wert3, Zeichen2,blub\n4, Wert4, Zeichen2,bla\n" | awk -F[,] '{printf "%4.4s%4.4s\n", $2,$3};'
Wer Zei
Wer Zei
Wer Zei
Wer Zei
gespeichert werden und die Zeile entsprechend in eine neue Datei "output.txt" abgespeichert.
Hups! ;-)
Na dann:
[...] awk -F[,] '{printf "%4.4s%4.4s\n", $2,$3};' > output.txt
so short
Christoph Zurnieden