* Am Mit, 18 Dez 2002 schrieb Matthias Hentges:
Am Mit, 2002-12-18 um 12.25 schrieb Peter Wiersig:
Matthias Hentges wrote:
$ cat "$EINE_DATEI" | replace "$EIN_STRING" "$EIN_ANDERER_STRING" > \ $"EINE_DATEI"
Vorsicht mit dem Konstrukt: cat Datei | befehl > Datei
Verkuerzt die Datei auf die Laenge des Buffers, bei grossen Dateien also ziemlich sicher ein Datenverlust.
"$ ulimit -p 8 ", also ein Buffer von 4 Kilobyte. (vgl. "help ulimit").
Hoppala, das hatte ich garnicht bedacht. Und neugierig wie ich bin habe ich das mal ausprobiert:
+mhentges@mhcln02:~ >cat /etc/* >~/test.txt
+mhentges@mhcln02:~ >du test.txt 748k test.txt
(habe mittig eine zeile rein gesetzt)
+mhentges@mhcln02:~ >cat test.txt | replace "irgendein_sinnloser_text" "hallo" > test2.txt
+mhentges@mhcln02:~ >diff -a test.txt test2.txt 7001c7001 < irgendein_sinnloser_text ---
hallo +mhentges@mhcln02:~ >
Hmm also bei mir funktioniert das. Oder mache ich was falsch? Mit 750kb sollte test.txt doch gross genug sein oder?
Wenn Du eine andere Datei als Eingabepuffer verwendest wie zur Ausgabe, kann ja auch nichts schief gehen. Das Problem tritt auf bei cat datei | sed -e 's/irgendwas/wasanderes/' > datei Gruß Christoph -- Christoph Maurer - 52072 Aachen - Tux#194235 mailto:christoph-maurer@gmx.de - http://www.christophmaurer.de Auf der Homepage u.a.: Installation von SuSE 7.0 auf Notebook Acer Travelmate 508 T, Elektrotechnik an der RWTH Aachen