PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeichen für Zeichren für Zeichen für...



08-03-2000, 10:05
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

08-03-2000, 10:49
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

robert
08-03-2000, 14:38
Hallo!

Versuch es mit sed!



cat datei | sed -e "s/;/;\n/g" > tmpfile


Gruß

Robert

12-03-2000, 18:50
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

StefanS
24-03-2000, 09:12
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