Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeichen für Zeichren für Zeichen für...
Hallo,
gibt es eine Möglichkeit ein file Zeichen für Zeichen durchzugehen und wenn ja, in welcher Variablen ist dann das Zeichen??? Sowas wie read achar oder so???
Gibt es sowas für die bash???
gruss und danke für die Hilfe alex
Christoph
08-03-2000, 10:41
Zeilenweise geht das mit
cat filename | while read _zeile
do
# do some stuff
done
ist aber nicht besonders schnell, weil
alles zwischen do...done in einer eigenen
Subshell ausgeführt wird.
Nimm dafür besser awk.
Christoph
Hallo,
schade dass das nicht so einfach geht. Kann ich aus meiner Datenzeile http://www.linuxforen.de/ubb/frown.gifist eine Zeile)
;;0;732116;1;20000303;1315;;TEST;VK;PSS;;;;;;;1;;T EST;TEST;PSS; PROGRAMM-STANDARD
soetwas machen:
;
;0
;732116
;1
;20000303
;1315
;
;TEST
;VK
;PSS
;
;
;
;
;
;
;1
;
;TEST
;TEST
;PSS
;PROGRAMM-STANDARD
??? Du siehst die Simikolon sind die Trennzeichen zwischen den Daten... Da musses doch ne Möglichkeit geben???
gruss alex
Hallo!
Versuch es mit sed!
cat datei | sed -e "s/;/;\n/g" > tmpfile
Gruß
Robert
Robert empfiehlt:
>cat datei | sed -e "s/;/;\n/g" > tmpfile
sorry, das funktioniert nicht.
aus >>> das;ist ; ein;Test;
wird dann >>> das;nist ;n ein;nTest;n
im man-file steht :
Miscellaneous notes
This version of sed supports a \<newline> sequence in all
regular expressions, the replacement part of a substitute
(s) command, and in the source and dest parts of a
transliterate (y) command. The \ is stripped, and the
newline is kept.
d.h es funktioniert aber wenn der Ersetzungs-string das Newline-Zeichen direkt enthält.
also:
Scriptfile (zwei Zeilen) erzeugen:
------------
s/;/\
;/g
--------------
Beachte:nach dem "\" Zeichen muss direkt ein <Return> folgen
cat datei | sed -f scriptfile > tmpfile
liefert dann:
das
;ist
; ein
;Test
;
Gruss Theo
Manfred-B
24-03-2000, 00:24
hi robert hi theo!
Bitte dreht mich nicht durch die Mange:
echo "$a" | sed 's/;/\
;/g' # get doch! aber nur mit dem 'hochkomma'
Es ist eben nicht egal ob man ein Gänsefüßchen oder Tux`s Schwimmflosse nimmt!
hi Alex Elsholz!
brauchst Du denn die führende ; Semikolons?
falls nicht, wärs ja noch einfacher:
a=';;0;732116;1;20000303;1315;;TEST;VK;PSS;;;;;;;1 ;;TEST;TEST;PSS; PROGRAMM-STANDARD'
echo "$a" | tr ';' '/n'
Gruß
Manfred
Hallo Elsholz !
Ich weis zwar nicht, was du mit den Daten vorhast, aber ich vermute du hast es jeweils auf ganz spezielle (einzelne) Felder abgesehen, und nicht den ganzen Datensatz.
Dann probier doch mal folgendes :
echo Zeile | cut -fFeldnummer[,Feldnummer...] -d;
Bei dem -f bin ich mir nicht ganz sicher (siehe man-page), mit dem Parameter -d gibt man jedoch das Trennzeichen an (welches übrigends in der Ausgabe nicht mehr auftaucht).
Ciao , STefanS
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.