Zeichen in TXT-Datei tauschen

Hallo,
ich habe 500 Textdateien.

In jeder dieser Dateien steht die Zeichenfolge xxx.

Nun muss diese Zeichenfolge gegen 001 - 002 - 003 usw. bis 500 ersetzt werden.

Hat jemand eine Idee, wie ich dieses automatisch durchführen kann?

Ich habe zwar ein Tool (Reptile.exe), welches Textteile gegen andere tauschen kann, komme damit aber hierfür nicht weiter.

500 Dateien zu öffnen - ändern - speicher und wieder schließen ist nicht gerade eine freudvolle Arbeit.

Grüße aus Düsseldorf
Joachim

Hallo,

ich habe 500 Textdateien.

wirklich Textdateien? (*.txt)

In jeder dieser Dateien steht die Zeichenfolge xxx.

Nun muss diese Zeichenfolge gegen 001 - 002 - 003 usw. bis 500
ersetzt werden.

Hat jemand eine Idee, wie ich dieses automatisch durchführen
kann?

Ich habe zwar ein Tool (Reptile.exe), welches Textteile gegen
andere tauschen kann, komme damit aber hierfür nicht weiter.

500 Dateien zu öffnen - ändern - speicher und wieder schließen
ist nicht gerade eine freudvolle Arbeit.

wenn Du nichts findest, was schon fertig ist, dann tippe ich Dir das heute Abend schnell. Damit die Tipperei nicht ausartet, sollten alle Dateien in einem Verzeichnis sein. Ist das ein Problem? Bevorzugt würde ich die Dateien geändert mit dem selben Namen in ein anderes Verzeichnis schreiben wollen, nur zur Sicherheit. Wenn während des Schreibvorgangs plötzlich der Strom ausfällt, könnte sonst ein Dokument verloren gehen.

Gruß, Rainer

Hallo,

also es sind HTML -reine TextDateien-

Darin ist der Eintrag Bild_xxx.jpg

und gerade dieser Eintrag muss geändert werden in 001 002 003 ect.

??? Meinst du wirklich, dies mir heute abend einzutippen ???

Ein Tool wäre sicherlich sinnvoller.

Oder eine kleine Batchroutine die so etwas ermöglicht.

Ganz nach der Art:

Datei öffnen
String suchen
String gegen Neuen tauschen
Datei speichern/schließen

String um 1 erhöhen

und zum nächsten.

Ich glaube (hoffe), wer sich mit Programmierung auskennt dürfte doch so etwas ohne Schwierigkeit hinbekommen.

Aber dein Angebot würde ich auch gerne wahrnehmen.
-Ich kanns nicht glauben-

Viele Grüße
Joachim

Hallo,

also es sind HTML -reine TextDateien-

Darin ist der Eintrag Bild_xxx.jpg

und gerade dieser Eintrag muss geändert werden in 001 002 003
ect.

dann ist das kein Problem.

??? Meinst du wirklich, dies mir heute abend einzutippen ???

*g* nein, ich meinte in 10 Minuten ein VB-Programm zu schreiben, das das kann. Länger dauert das mit VB nicht.

Ein Tool wäre sicherlich sinnvoller.

Ja.

Oder eine kleine Batchroutine die so etwas ermöglicht.

Das kann ich nicht, richtig schnell bin ich nur mit VB. :smile:

Ganz nach der Art:

Datei öffnen
String suchen
String gegen Neuen tauschen
Datei speichern/schließen

String um 1 erhöhen

und zum nächsten.

Ich glaube (hoffe), wer sich mit Programmierung auskennt
dürfte doch so etwas ohne Schwierigkeit hinbekommen.

Richtig, kein Problem.

Aber dein Angebot würde ich auch gerne wahrnehmen.
-Ich kanns nicht glauben-

Das war auch ein Mißverständnis, Programm tippen war gemeint. :smile:

Noch mal die Frage, darf ich davon ausgehen, daß die Dateien alle in einem Verzeichnis liegen und Du ein weiteres leeres Verzeichnis zur Verfügung stellst, in das die geänderten Dateien geschrieben werden? Das ist am sichersten, einen Datenverlust möchte ich nicht verantworten müssen.

Gruß, Rainer

Hallo Rainer,

na Gott sei Dank - ich dachte schon - wer macht bloss so etwas?

Also wir sind auf dem richtigen Weg.

Die Dateien heissen Bild_001.html bis Bild_500.html

Darin - wie bekannt - Bild_xxx.jpg …

Und dieser Eintrag muss eben zu Bild_001.jpg bis Bild_500.jpg werden.

Wie das Ergebnis erreicht wird ist letztlich egal - das Ergebnis zählt.

Könntest du mir solch ein Teil machen damit ich es dann nutzen kann oder soll ich dir die Dateien schicken?

Gruß aus Düsseldorf
Joachim

Hallo Joachim,

ich mach das heute Abend, lege das Programm auf meine Website und poste den Link zum Download. Du solltest also gegen Abend noch mal nachsehen. :smile:

Gruß, Rainer

Hallo Rainer,

super - schon mal vielen Dank vorab.

Gruß, Joachim

Hallo,

*g* nein, ich meinte in 10 Minuten ein VB-Programm zu
schreiben, das das kann. Länger dauert das mit VB nicht.

VB? Pfui Deibel. Hier kommt Shell, ganz quick & dirty:

Das eigentliche Programm lautet „name-replace“, hier kommt es:

#!/bin/sh


FILE=`echo $1 | awk -F "_" '{print $2}' | awk -F "." '{print $1}'`

cat $1 | sed s/xxx/$FILE/g \> $1

So, und das muß man für jede Bild-Datei separat aufrufen, das geht am besten automatisiert mit „find“:

**$\>** find Bild\* -exec name-replace \{\}\;

HTH & have fun,

Sebastian,

total stümperhafter Shell-H4x0r

Hallo Joachim,

OK, getestet und hoch geladen …

http://www.winhome.de/Ersetzen.zip

Gruß, Rainer

Hallo Sebastian,

VB? Pfui Deibel. Hier kommt Shell, ganz quick & dirty:

Na wenn man nur VB kann, dann kommt man damit auch zum Ziel. :smile:

Das eigentliche Programm lautet „name-replace“, hier kommt es:

#!/bin/sh

FILE=echo $1 | awk -F "\_" '{print $2}' | awk -F "." '{print $1}'

cat $1 | sed s/xxx/$FILE/g > $1

Ist das Chinesisch? Sieht ja schrecklich aus, ist aber viel kürzer als mein VB-Programm. Das ist dafür lesbar.

So, und das muß man für jede Bild-Datei separat aufrufen, das
geht am besten automatisiert mit „find“:

$> find Bild* -exec name-replace {};

Hübsch, ich werd’s trotzdem nicht lernen, beim Umgang mit Datenbanken habe ich dann doch lieber eine Oberfläche, auf der ich auch 'ne Maus habe.

Gruß, Rainer

Hallo,

VB? Pfui Deibel. Hier kommt Shell, ganz quick & dirty:

Na wenn man nur VB kann, dann kommt man damit auch zum Ziel. :smile:

Naja, VB funktioniert halt nur auf so schrecklich wenigen Betriebssystemen :wink:

Ich hätte Deine Lösung ja durchaus auch mal ausprobiert.

Das eigentliche Programm lautet „name-replace“, hier kommt es:

> > #!/bin/sh  
> >   
> >   
> > FILE=`echo $1 | awk -F "_" '{print $2}' | awk -F "." '{print $1}'`




> > cat $1 | sed s/xxx/$FILE/g \> $1

Ist das Chinesisch? Sieht ja schrecklich aus, ist aber viel
kürzer als mein VB-Programm. Das ist dafür lesbar.

Nun, ich finde das durchaus lesbar, ich könnte aber auch eine etwas verlängerte Version erstellen und die Schritte entsprechend dokumentieren.

Und besser kann man das ohnehin machen.

Letztlich ist es nur eine Verknüpfung der Programme „awk“ (um aus dem Dateinamen die Nummer herauszubekomen) und „sed“ (um die XXX in der Datei gegen die zuvor ermittelte Zahl auszutauschen.

Ist wirklich simpel (aber wie gesagt ganz grottenschlecht „programmiert“.

Hübsch, ich werd’s trotzdem nicht lernen, beim Umgang mit
Datenbanken habe ich dann doch lieber eine Oberfläche, auf der
ich auch 'ne Maus habe.

Datenbanken? Hier ging es doch nur darum, ein paar Dateinamen bzw Dateiinhalte anzupassen. Um Fotos zu verwalten nehme ich auch graphische Oberfklächen („digikam“ ist echt nett).

Gruß,

Sebastian

Hallo Sebastian,

Datenbanken? Hier ging es doch nur darum, ein paar Dateinamen
bzw Dateiinhalte anzupassen. Um Fotos zu verwalten nehme ich
auch graphische Oberfklächen („digikam“ ist echt nett).

ja, aber ich bin doch schon froh, wenn ich mir ein’s merken kann. :smile: Was Du da zauberst ist zu hoch für mich. Mir reicht es, wenn ich zurecht komme und ja, Du hast Recht, VB ist eigentlich eine Nummer zu groß dafür. Aber Du weißt ja wie das mit Töpfen ist, wo viel hinein passt, passt auch wenig. :smile:

Gruß, Rainer

Hallo,

Hi,

Das eigentliche Programm lautet „name-replace“, hier kommt es:

> #!/bin/sh  
>   
>   
> FILE=`echo $1 | awk -F "\_" '{print $2}' | awk -F "."  
> '{print $1}'`  
>   
> cat $1 | sed s/xxx/$FILE/g \> $1







> **$\>** find Bild\* -exec name-replace \{\}\;

Hm, ich hatte es eher so verstanden:

 $ i="000"
 $ for file in \*.html
 \> do
 \> sed -e "s/Bild\_xxx\.jpg/Bild\_$i.jpg/g" $file \>$file.new
 \> mv $file.new $file
 \> i=`printf "%.3d" \`expr $i + 1\``
 \> done
 $ unset i

Das ist dann auch viel weniger lesbar.

Gruss vom Frank.

Hallo Frank,

Hm, ich hatte es eher so verstanden:

$ i=„000“
$ for file in *.html
> do
> sed -e „s/Bild_xxx.jpg/Bild_$i.jpg/g“ $file
>$file.new
> mv $file.new $file
> i=printf "%.3d" \expr $i + 1``
> done
$ unset i

nein, das war schon richtig, die Zahl aus dem Dateinamen soll in die Datei. :smile:

Das ist dann auch viel weniger lesbar.

Ja.

Gruß, Rainer

nein, das war schon richtig, die Zahl aus dem Dateinamen soll
in die Datei. :smile:

Hm, vielleicht sollte ich threads bis zum Ende lesen, bevor ich rumgacker:

 for i in `seq -w 500`; do sed "s/Bild\_xxx\.jpg/Bild\_$i.jpg/g" Bild\_$i.html \>tmp.$$.html; mv tmp.$$.html Bild\_$i.html; done

Das ist dann auch viel weniger lesbar.

Ja.

Und da hab ich weder uudecode noch md5sum verwendet…

Gruss vom Frank.

Hallo Rainer,

ich kann nur eins sagen: !! Genial !!.

Vielen lieben Dank.

Grüße aus Düsseldorf
Joachim

Hallo Joachim,

ich kann nur eins sagen: !! Genial !!.

danke. :smile:

Vielen lieben Dank.

Nichts zu danken, beim nächsten mal darf’s etwas schwieriger sein.

Gruß, Rainer

Hallo Rainer,

naja für mich war es schwierig genung…

Aber kannst Du haben.

Wie wär es damit:

Auf Grund Deines Programmes könnte man doch einen Konfigdialog machen nach dem Muster:

X oder sonst gewählte Zeichen als Suchindex.

xxxxxx = 001 um Hoch- oder Runter zu zählen (als Option)
001 könnte man auch als ### eingeben für die Anzahl der
Stellen, dann Anfangswert und Sprung 1 für 1,2,3 —
2 für 1,3,5 (2,4,6) ect.
Wenn man führende/folgende Zeichen plus Nummer erreichen will,
dann als Synthax zzzzzz###zzzz für z.B. hallo_001.txt.

xxxxxx = a (A) um Hoch- oder Runter zu Buchstabieren (als Option)
ansonsten wie bei dem Beispiel davor.

Schwierig genung??

Ich könnte mir vorstellen dies gut zu gebrauchen gerade, wenn man, so wie ich so viele Dateien mit gleichartigem /ähnlichem Inhalt hat, wie es bei HTML-Dateien des öfteren vorkommt.

Nächtliche Grüße aus Düssldorf
Joachim

Hallo Joachim,

naja für mich war es schwierig genung…

Aber kannst Du haben.

hmmm, laß sehen …

Wie wär es damit:

Auf Grund Deines Programmes könnte man doch einen Konfigdialog
machen nach dem Muster:

X oder sonst gewählte Zeichen als Suchindex.

xxxxxx = 001 um Hoch- oder Runter zu zählen (als Option)
001 könnte man auch als ### eingeben für die Anzahl
der
Stellen, dann Anfangswert und Sprung 1 für 1,2,3 —
2 für 1,3,5 (2,4,6) ect.
Wenn man führende/folgende Zeichen plus Nummer
erreichen will,
dann als Synthax zzzzzz###zzzz für z.B.
hallo_001.txt.

xxxxxx = a (A) um Hoch- oder Runter zu Buchstabieren (als
Option)
ansonsten wie bei dem Beispiel davor.

Schwierig genung??

Nö. :smile: Das ist nur etwas flexibler, aber nicht schwieriger. Heute fange ich das nicht mehr an, obwohl die Basis ja schon fertig ist. :smile: Ob das noch vor dem Wochenende feritig wird, weiß ich nicht, aber dieses mal hast Du’s ja wohl nicht so eilig.
Deine Problembeschreibungen gefallen mir. Da ist das Programm immer eigentlich schon fertig. Du scheinst Dich mit HTML auszukennen? Denk Dir mal etwas schwierigeres aus, das könnte gut werden. :smile:

Ich könnte mir vorstellen dies gut zu gebrauchen gerade, wenn
man, so wie ich so viele Dateien mit gleichartigem /ähnlichem
Inhalt hat, wie es bei HTML-Dateien des öfteren vorkommt.

Na prima. Das sollst Du haben. Diesen Monat noch, denke ich.

Gruß, Rainer

Hallo Rainer,
eigentlich kenne ich mich (fast) garnicht aus. Ich fische (meist) im trüben. Kann aber lesen - und das mache ich. Wenn mir eine Funktion gefällt, schau ich in den Source-code und picke ihn heraus.

So bastele ich mir das eine oder andere.

Vom Layout habe ich meist klare Vorstellungen auch von den Abläufen und den Funktionsanforderungen - nur das Umsetzen in HTML … böhmische Dörfer… Wenn ich aber mal ein Konzept habe und das Grundgerüst dazu gelingt es mir oft es meinen Wünschen anzupassen. That’s it.


Ich bin ein Liebhaber kleiner Helfer, die einem, das Leben doch stark erleichtern. Nur die Anforderungen an die „kleinen Helfer“ können viele nicht genau definieren. Das ist alles.

Wie gesagt - das Tool von dir ist -für mich- genial und wenn mir etwas einfällt, sage ich Dir es gerne. Lieber eine Handvoll kleiner SINNVOLLER Tools, als die manchmal unglaublich gigantischen Programme die vor lauter Optionen für die meisten nicht mehr durchschaubar sind, ohne sich wochenlang mit den Funktionen auseinanderzusetzen.

Bye, bye.
Good night - wir bleiben auf jeden Fall in Verbindung.

Bis bald
Joachim