Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst Text-Datei lesen und bearbeiten

Mitglied: DexXxtrin

DexXxtrin (Level 1) - Jetzt verbinden

29.05.2008, aktualisiert 22:13 Uhr, 7541 Aufrufe, 22 Kommentare

Hallo Zusammen

Ich möchte bei einer .txt-Datei bestimmte Buchstaben auswechseln durch andere. Dies möchte ich mit jedem Buchstabe in der Ganzen Datei machen. Problem ist, es sind immer andere Texte, das heisst ich weiss nicht wie viele Zeichen, Absätze es sind.
Diese Abänderung soll nur erfolgen, wenn in der ersten Zeile ein bestimmter Wert vorhanden ist.

Der Aufwand spielt keine grosse Rolle, denn ich will es mit Batch realisieren...

Hoffentlich kennt ihr eine Möglichkeit... =)
Mitglied: SarekHL
29.05.2008 um 18:03 Uhr
Per Batch wüßte ich keine Lösung, aber es wäre ein leichtes, ein kleines Basic-Programm zu schreiben, daß diese Aufgabe vollbringt ...
Bitte warten ..
Mitglied: DexXxtrin
29.05.2008 um 18:04 Uhr
Das Problem ist, ich habe keine Ahnung von Basic...
Bitte warten ..
Mitglied: SarekHL
29.05.2008 um 18:09 Uhr
Und dann vermutlich auch keinen Compiler ...

Vielleicht weiß hier ja jemand, wie das per Batch geht , also erst mal abwarten. Wenn nichts kommt, mußt Du mir mal die genaue Aufgabenstellung beschreiben (also welche Zeichen ausgetauscht werden sollen, ob es eine bestimmte, vorauszuwählende Datei ist oder mehrere Dateien, die automatisch verarbeitet werden sollen und so weiter). Wenn ich Zeit habe, kann ich Dir dann ein Tool schreiben ...
Bitte warten ..
Mitglied: DexXxtrin
29.05.2008 um 18:14 Uhr
Es handelt sich um eine Datei, welche der Benutzer festlegt (dieser Bereich habe ich bereits, fehlt nur noch das abändern).
Bitte warten ..
Mitglied: SarekHL
29.05.2008 um 18:17 Uhr
Und dort soll ein Zeichen durch ein anderes ersetzt werden? Handelt es sich immer um das gleiche Zeichen-Paar?
Bitte warten ..
Mitglied: Ricky99
29.05.2008 um 18:23 Uhr
Guck Dir doch mal den SED-Editor an ...

http://sed.sourceforge.net/

Grüße,

Ralf.
Bitte warten ..
Mitglied: DexXxtrin
29.05.2008 um 18:39 Uhr
Ist das eine eingene Sprach, odar ist das eine Funktion mit Batch?
Bitte warten ..
Mitglied: DexXxtrin
29.05.2008 um 18:45 Uhr
Es soll mehr mals ein Zeichen durch ein anderes erstzt werden! Ja es handelt sich immer um das gleiche, aber wenn dieses Zeichenpaar mehrmals vor kommt, sollen alle abgeändert werden.

Ich dachte, dass man vielleicht die Text-Datei untersuchen kann, wie viele Zeichen vorhanden sind. Dann könnte man immer ein Zeichen nach dem anderen rauslesen, überprüfen und in die neue Datei schreiben. Und diesen Vorgang wiederholen, bis alle Zeichen durch sind...

Weiss nicht ob das möglich ist und mit welchen Befehlen (da ich erst neu bin).
Bitte warten ..
Mitglied: SarekHL
29.05.2008 um 18:51 Uhr
Nun ja, das Verfahren ist klar:

- die Quelldatei Zeichen für Zeichen einlesen
- dabei prüfen ob das gerade eingelesene Zeichen das zu ersetzende ist und es dann ersetzen
- das gerade ausgelesene (bzw. ggf. geänderte) Zeichen in die Zieldatei speichern
- nachdem die Datei vollständig verarbeitet wurde ggf. die Quelldatei löschen und die Zieldatei auf den ursprünglichen Namen der Quelldatei umbenennen

In Basic wüßte ich auch, wie das zu bewerkstelligen ist, in Batch hingegen nicht.
Bitte warten ..
Mitglied: Biber
29.05.2008 um 18:55 Uhr
Moin DexXxtrin,

willkommen im Forum.
Als Moderator von "Batch & Shell" weise ich jede Zuständigkeit für Deine Anforderung weit von mir.
Dafür sind die mitgelieferten Batch-Befehle NICHT sinnvoll geeignet.
Batch arbeitet ZEILEN-orientiert, Du brauchst etwas ZEICHEN-orientiertes.

Ricky99's Tipp mit SED ist goldrichtig und ich würde Dich auch bitten, erst mal dem oben geposteten Link zu folgen und (sei tapfer) es damit auch zu versuchen.
Warnung: es sieht absolut unverständlich aus ...aber nur auf den ersten Blick.

Wenn Du es versucht hast und nicht zu einem Erfolgserlebnis kommen solltest, dann machen wir hier weiter.

Grüße
Biber
Bitte warten ..
Mitglied: DexXxtrin
29.05.2008 um 19:18 Uhr
Funktioniert SED auch mit dem normalen Windows-Editor und dann als BATCH? Oder braucht man da seperate Programme?
Bitte warten ..
Mitglied: SarekHL
29.05.2008 um 19:29 Uhr
Nur mal als Tipp: Die meisten Mitglieder hier verstehen administrator.de als Hilfe zur Selbsthilfe. Hast Du Dir mal die Mühe gemacht, Dich etwas in die Seite einzulesen, die Ricky99 Dir empfohlen hat? Wenn es dann für Dich nicht geeignet ist, können wir immer noch weitersehen, ob wir eine andere Lösung finden, aber erst mal solltest Du (selber) prüfen, ob der Lösungsvorschlag geeignet ist ...
Bitte warten ..
Mitglied: bastla
29.05.2008 um 20:02 Uhr
Hallo DexXxtrin!

Auch wenn ich mich grundsätzlich dem "sed"-Vorschlag anschließe, wäre auch (zur Not) eine Lösung mit Batch machbar (abhängig von den sonstigen Inhalten der .txt-Datei), allerdings hat auch Biber schon darauf hingewiesen, dass das nicht das richtige Werkzeug für Dein Vorhaben ist - besser geeignet ist zB, wie von SarekHL vorgeschlagen, Basic.

Um dennoch mit Bordmitteln (und tatsächlich ein wenig Batch) an die Sache heranzugehen, könntest Du es (unter Verwendung von temporärem VBScript) etwa so anlegen:
01.
@echo off & setlocal
02.
set "Quelle=D:\Dein Text.txt"
03.
set "Von=X"
04.
set "Nach=Y"
05.
 
06.
set R=%temp%\Repl.vbs
07.
echo Set fso=CreateObject("Scripting.FileSystemObject"):F=WScript.Arguments(0):T=fso.OpenTextFile(F).ReadAll:fso.OpenTextFile(F,2,True).Write Replace(T,"%Von%","%Nach%")>%R%
08.
 
09.
cscript //nologo %R% "%Quelle%"
Die Ersetzung erfolgt "in" der Quelldatei (gemeint ist, dass keine Sicherungskopie angelegt wird, sondern die Ausgangsdatei durch die neue Version ersetzt wird) und ist "case sensitive" (berücksichtigt Groß-/Kleinschreibung - "X" wird ersetzt, "x" nicht).
Trotzdem noch einmal zurück zu "sed":
Funktioniert SED auch mit dem normalen Windows-Editor und dann als BATCH? Oder braucht man da seperate Programme?
Du brauchst eine Windows-Version ("sed.exe"), welche Du dann als Filter in einer Batch-Zeile verwenden kannst.

Grüße
bastla

[Edit] Der horizontale Scrollbalken für Codeblöcke ist offensichtlich Rationalisierungsmaßnahmen zum Opfer gefallen ... Wenn Du den Code als "Quelltext" anzeigst oder "in den Speicher kopierst" bekommst Du aber die vollständige Zeile 7 geliefert. [/Edit]

[Edit2 by Biber] Den Bug sehe ich auch (im IE6). Habe es als Bug #490 eingetragen. [/Edit2]
Bitte warten ..
Mitglied: DexXxtrin
29.05.2008 um 20:58 Uhr
Ich habe mich sehr wohl mit SED auseinander gesetzt! Habe auf verschiedenen Seiten nachgeschaut, aber es war NIERGENDS beschrieben, wie man SED programmiert! Deshalb meine Frage! Somit vielen Dank and bastla!

Was ich nicht kapiere bei dem ganzen: Wie programmiert man dieses SED???
Ich bin zum Beispiel auch auf diese Seite gestossen: http://www.ostc.de/sed.pdf
Da wird alles Wunderbar erklärt. Abar wie man das Programmiert erklärt niemand.

Ich kenne zwar die Befehle, mit welchem ich was machen kann. Aber wie ich ein Programm schreibe habe ich null Ahnung.
Tut mir leid, abar langsam bin ich am verzeifeln.
Aus der Englischen Seite werde ich nicht ganz schlau und aus dem Rest den ich finde auch nicht!

Ich möchte wissen, ob man diesen Code auch im Editor schreiben muss, als was abspeichern (*.sed?). Kann man das mit Batch im gleichen Script schreiben, was mit sed.exe machen?
Bitte warten ..
Mitglied: bastla
29.05.2008 um 21:11 Uhr
Hallo DexXxtrin!

In Deinem Fall wäre das etwa so:
01.
type "D:\Dein Text.txt"|sed s/X/Y/g>"D:\Dein neuer Text.txt"
Ablauf:
  • Ausgabe der Quelldatei,
  • filtern mit "sed" (die "sed.exe" muss im Pfad %path% auffindbar sein oder mit vollständigem Pfad, zB "C:\Tools\sed", angegeben werden); wobei mit dem "g" am Ende "globales Ersetzen" (= alle Vorkommen von "X" innerhalb der Datei werden durch "Y" ersetzt) festgelegt wird, und
  • Schreiben (per Umleitung) der (veränderten) Ausgabe in eine neue Datei.

Es genügt also letztlich eine Zeile Batch ...

Grüße
bastla
Bitte warten ..
Mitglied: DexXxtrin
29.05.2008 um 21:39 Uhr
Ich habe jetzt mal zum Versuchen eine Batchdatei geschrieben, die sieht volgendermassen aus:

@echo off
set /P path=Pfad von sed.exe
type "D:\Text.txt"|sed y/x/y/g>"D:\Text1.txt"

der Befehl set ist, damit die sed.exe im Pfad %path% (wie bastla sagt) auffindbar ist.
Nun ist die Ausgabe Datei Text1.txt lehr....
Bitte warten ..
Mitglied: bastla
29.05.2008 um 21:47 Uhr
Hallo DexXxtrin!

Die Variable %path% solltest Du auf keinen Fall durch einen neuen Eintrag ersetzen, sondern nur ergänzen - gemeint war aber eigentlich, dass die "sed.exe" in einem Verzeichnis, das im schon vorhandenen %path% steht, abgelegt sein sollte (zB C:\Windows\System32).

Versuch es aber einfach so:
01.
type "D:\Text.txt"|"Pfad von sed.exe\sed" s/x/y/g>"D:\Text1.txt"
Übrigens sind manchmal auch leere Dateien lehrreich ...

Das "s" nach "sed" (und vor "/x/y/g") steht übrigens für "substitute", und das willst Du ja eigentlich machen [Edit] ... oder eigentlich auch wieder nicht, wenn es ja jeweils nur ein einzelnes Zeichen sein soll, daher ist "y" schon OK ... [/Edit]

Grüße
bastla
Bitte warten ..
Mitglied: DexXxtrin
29.05.2008 um 21:55 Uhr
Ups da hab ich wohl was falsch verstanden...
Aber vielen Dank für deine Hilfe!!! Jetzt hat es funktioniert!!
Da nicht bestimmt ist wo sed.exe ist, habe ich es so gemacht:

@echo off
set /P sed=
type "D:\Text.txt"|"%sed%" y/x/y/g>"D:\Text1.txt"

Das ganze funktioniert perfekt!=)

Vielen Dank an alle für eure bemühungen!!!
Bitte warten ..
Mitglied: Biber
29.05.2008 um 21:58 Uhr
Moin,

und es könnte sinnvoller sein, wie bastla auch oben gepostet hat, von einer Datei in eine andere zu schreiben (Datei->DateiNeu) und gegebenfalls danach unzubenennen.
Sonst bleibt die Zieldatei nämlich im Fehlerfall leer und es lässt sich dann nur begrenzt wiederholen.

Grüße
Biber
P.S. Ich verkneife es mir schon seit Stunden: wofür ist denn dieses Krams?
Verschlüsselung von Schulhof-Post?
Bitte warten ..
Mitglied: DexXxtrin
29.05.2008 um 22:05 Uhr
Moin,

Ich habe ja in eine neue Datei geschrieben...!? Von Text->Text1

@bastla
Ich habe das s nach sed und vor /x/y durch y ersetz, da ich mit s nur einen Ausdruck verändern kann, mit y kann ich mehrere Buchstaben verändern.
Wenn ich s/xy/vw/g schreibe, ersetzt es mir alle xy durch vw, aber wenn ich dies so schreibe
y/xy/vw/ ersetzt es alle x durch v und alle y durch w.
Hoffe habe die Befehle richtig verstanden!

Gruss DexXxtrin
Bitte warten ..
Mitglied: bastla
29.05.2008 um 22:05 Uhr
Da nicht bestimmt ist wo sed.exe ist ...
Den Pfad eingeben zu müssen ist nicht wirklich elegant - lege die "sed.exe" doch einfach in das selbe Verzeichnis wie die Batchdatei, und schreibe dann:
01.
type "D:\Text.txt"|"%~dp0sed" y/x/y/>"D:\Text1.txt"
Grüße
bastla
Bitte warten ..
Mitglied: bastla
29.05.2008 um 22:13 Uhr
ich habe das s nach sed und vor /x/y durch y ersetz, da ich mit s nur einen Ausdruck verändern kann, mit y kann ich mehrere Buchstaben verändern.
Ja, sorry, war mir zu spät auf-/eingefallen ...

Grüße
bastla
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Ergebnis in Text datei ausgeben
gelöst Frage von XcaschoXBatch & Shell2 Kommentare

Hallo, irgendwie stehe ich auf dem schlauch. Habe folgende Batch erstellt, aber der Text wier immer überschrieben. Das ergebnis ...

Debian

Rasbian Text Datei gelöscht - wiederherstellbar?

Frage von bytetixDebian1 Kommentar

HI, habe mich mit meinem Handy per OpenVPN auf eine Samba Freigabe auf meiner entfernten PI verbunden und dort ...

Batch & Shell

Text Datei bestimmte Bereiche lesen und in neue Text schreiben

gelöst Frage von Doktore1Batch & Shell3 Kommentare

Hallo @ all, bin neu hier und habe sehr wenig Erfahrung mit batch Skripten. Ich würde mich sehr freuen ...

Batch & Shell

Doppelte Zeilen in Text-Datei löschen

gelöst Frage von reckheimBatch & Shell15 Kommentare

Hallo ich schreibe lange Übersetzungsprogramme in FoxPro in unten folgender Text-Datei-Form. Die Datei ist allerdings durch Zusammenführung verschiedener Versionen ...

Neue Wissensbeiträge
Erkennung und -Abwehr
OpenSSH-Backdoor Malware erkennen
Tipp von Frank vor 17 StundenErkennung und -Abwehr

Sicherheitsforscher von Eset haben 21 Malware-Familien untersucht. Die Malware soll Hintertüren via OpenSSH bereitstellen, so dass Angreifer Fernzugriff auf ...

iOS
WatchChat für Whatsapp
Tipp von Criemo vor 3 TageniOS3 Kommentare

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor!
Tipp von Criemo vor 4 TageniOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Off Topic
Avengers 4: Endgame - Erster Trailer
Information von Frank vor 6 TagenOff Topic2 Kommentare

Ich weiß es ist Off Topic, aber ich freue mich auf diesen Film und vielleicht geht es anderen hier ...

Heiß diskutierte Inhalte
Windows Server
Einziger Domänencontroller ersetzen - Windows Server 2012R2 - Hostname
Frage von DeRo93Windows Server27 Kommentare

Guten Tag, Leider haben wir einen Domänencontroller dessen Komponentenspeicher defekt ist. Alle Maßnahmen sind da leider fehlgeschlagen. Nun wurde ...

Server-Hardware
WS 2016 Essentials Hardware
Frage von ChefknechtServer-Hardware20 Kommentare

Moin welche Hardware würdet ihr empfehlen? Dell Poweredge HP Proliant Fujitsu Ich bin total konfus was nun nötig ist, ...

Windows Server
Welche Option fürs Windows Server Installations besser
Frage von backitWindows Server18 Kommentare

Hi Zusammen, ich werde unserer AD (SBS 2011) und Exchange 2010 Servern auf neuen physikalischen Server umziehen. ich habe ...

Windows Update
Fehler bei Updates über WSUS
Frage von Hendrik2586Windows Update17 Kommentare

Guten Tag liebe Kolleginen und Kollegen, lang lang ist meine letzte Anfrage her. Hier etwas das mich nun schon ...