Shell: Ersetzen
depp
- webserver
moin
wie kann ich am effektivsten in ner 250mb größen datei alle </bestimmter_tag> ersetzen lassen durch </bestimmter_tag>\r\n ?
danke
moin
wie kann ich am effektivsten in ner 250mb größen datei alle </bestimmter_tag> ersetzen lassen durch </bestimmter_tag>\r\n ?
Eventuell mit dem Streameditor /usr/bin/sed und dem Kommando s. In etwa so
sed -e "s/<tag_alt>/<tag_neu>\n/g"
Gruß
L00NIX
moin
habs probiert. aber leider kommt das nach ner zeit:
sed: Couldn't re-allocate memory
Hallo,
habs probiert. aber leider kommt das nach ner zeit:
sed: Couldn't re-allocate memory
Das ist ein malloc()-Error. Das re-allocate deutet darauf hin, dass der Input-Stream gelesen wurde, die Änderungen vorgenommen sind, aber in den Output-Stream nun nicht mehr geschrieben werden kann.
Eine mögliche Ursache ist, dass in Deinem File eine _wirklich_ _sehr_ lange Zeile ohne \n vorkommt.
In welcher Umgebung (Plattform, Arbeitsspeicher ...) läuft das? Um was für eine Art Datei handelt es sich?
Tipp: Versuche mit -u ungepuffert zu arbeiten.
http://www.die.net/doc/linux/man/man1/sed.1.html
viele Grüße
Axel
moin
genau das ist das problem. in der datei kommt nirgendwo ein zeilenumbruch vor. durch sed sollen an bestimmten stellen \n eingebracht werden.
-u hat nicht geholfen. was kann ich noch versuchen?
danke
Hi,
genau das ist das problem. in der datei kommt nirgendwo ein zeilenumbruch vor. durch sed sollen an bestimmten stellen \n eingebracht werden.
-u hat nicht geholfen. was kann ich noch versuchen?
Entweder ist im Aufruf von sed ein Fehler drin, oder sed ist kaputt (zwar _extrem_ unwahrscheinlich, aber nicht unmöglich). Da Du auf einem Unixsystem zu arbeiten scheinst müßte eigentlich Perl vorhanden sein.
$ for i in locate .htm
; do cat $i >> testdata ; done
$ time perl -pie 's/<table>/\n/g' testdata
real 3m36.767s
user 0m18.470s
sys 0m10.460s
$ grep '<table>' testdata | wc -l
0
Der Perlbefehl ist auch leicht zu merken, da die Optionen zu einem "pie", einem "Törtchen" also, geordnet werden können.
Siehe auch 'man perlrun'.
so short
Christoph Zurnieden
PS:
Finde die Fehlermeldung von sed aber wirklich _sehr_ merkwürdig. Bist Du Dir sicher, das Du Dich nirgendwo vertippt hast?
CZ