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 Batch - Suchen und Ersetzen der letzten 2 Zeichen in einer txt Datei

Mitglied: koefinger

koefinger (Level 1) - Jetzt verbinden

25.07.2011 um 21:30 Uhr, 8097 Aufrufe, 9 Kommentare

Hallo, ich bin neu hier und würde mich freuen wenn mir jemanden weiterhelfen kann.

Ich habe eine riesige (paar 100000 Zeilen) txt-Datei (TEST.txt), mit folgendem Inhalt:

E4Q 91201 80730 80732 80299 80297 61
E4Q 91202 80731 80298 80733 80734 61
E3T 91203 80301 80733 80298 61
E4Q 91204 80735 80302 80299 80732 61
E4Q 91205 80733 80301 80322 80736 71
E4Q 91206 80737 80303 80302 80735 61
E4Q 91207 80738 80726 80303 80737 61
E4Q 91208 80307 80306 80309 80739 91
E4Q 91209 80307 80739 80725 80318 91

Ist es mittels batch möglich jeweils die letzten beiden Zeichen auszulesen und danach zu ersetzen und zwar mit der bedingung dass z.B.
61 soll 2 werden
71 soll 69 werden
91 soll 45 werden

d.h. das ergebnis sollte folgendermaßen aussehen:
E4Q 91201 80730 80732 80299 80297 2
E4Q 91202 80731 80298 80733 80734 2
E3T 91203 80301 80733 80298 2
E4Q 91204 80735 80302 80299 80732 2
E4Q 91205 80733 80301 80322 80736 69
E4Q 91206 80737 80303 80302 80735 2
E4Q 91207 80738 80726 80303 80737 2
E4Q 91208 80307 80306 80309 80739 45
E4Q 91209 80307 80739 80725 80318 45

Danach soll die Datei überspeichert werden.

Ich tüfftle schon geraume Zeit herum und habe versucht aus den vorhandenen Suchen und Ersetzen Foreneinträgen schlau zu werden,
bisher leider ohne Erfolg.

LG Stefan.
Mitglied: 64748
25.07.2011 um 21:47 Uhr
Guten Abend Stefan,

mit Batch kann ich in diesem Fall nicht helfen. Aber im Editor vim (gibt's auch für Windows ftp://ftp.vim.org/pub/vim/pc/gvim73_46.exe) kannst Du mit den drei Kommandos
:%s/61$/2/
:%s/71$/69/
:%s/91$/45/
Diese Befehle werden im Command-mode ausgeführt.

Markus
Bitte warten ..
Mitglied: Addl123
25.07.2011 um 22:11 Uhr
Spontanwürde ich Notepad++ benutzen. Um es ganz einfach zu machen: Mit Macro Aufnehmen, und dann mehrmals abspielen (backspace,backspace,forward,down,back, und dann beliebig oft abspielen).
Bitte warten ..
Mitglied: 64748
25.07.2011 um 22:16 Uhr
Zitat von Addl123:
Spontanwürde ich Notepad++ benutzen. Um es ganz einfach zu machen: Mit Macro Aufnehmen, und dann mehrmals abspielen
(backspace,backspace,forward,down,back, und dann beliebig oft abspielen).
Naja, Du musst schon gezielt nach dem Vorkommen der Zahlen am Ende der Zeile suchen, also musst Du im Macro die Suchfunktion mit aufnehmen, dann kannst Du aber auch gleich Suchen/Ersetzen benutzen, so wie ich's oben beschrieben habe.

Markus
Bitte warten ..
Mitglied: Lochkartenstanzer
25.07.2011 um 22:33 Uhr
Zitat von koefinger:

Mit cygwin geht das:

61 soll 2 werden
sed -e "s/61$/2/g" -i TEST.txt
71 soll 69 werden
sed -e "s/71$/69/g" -i TEST.txt
91 soll 45 werden
sed -e "s/91$/45/g" -i TEST.txt
Bitte warten ..
Mitglied: Addl123
25.07.2011 um 22:38 Uhr
Zitat von 64748:
> Zitat von Addl123:
> ----
> Spontanwürde ich Notepad++ benutzen. Um es ganz einfach zu machen: Mit Macro Aufnehmen, und dann mehrmals abspielen
> (backspace,backspace,forward,down,back, und dann beliebig oft abspielen).
Naja, Du musst schon gezielt nach dem Vorkommen der Zahlen am Ende der Zeile suchen, also musst Du im Macro die Suchfunktion
mit aufnehmen, dann kannst Du aber auch gleich Suchen/Ersetzen benutzen, so wie ich's oben beschrieben habe.

Markus




Ich hab zu schnell geantwortet, ich hab gedacht er will die letzten zwei Zeichen löschen (ich hab mir nur schnell das Ergebnis angeschaut). Wobei das was er will ja nicht schwer ist, da es ja immer Leerzeichen ## Absatz ist. Geht ja auch mit extenden / regular expressions (in N++) (z.B. mit RegEx suchen " 91§" und ersetzen " 45$".
Bitte warten ..
Mitglied: bastla
25.07.2011 um 22:41 Uhr
Hallo koefinger und willkommen im Forum!

Soferne es keine zwingenden Gründe für die Verwendung von Batch gibt, würde ich eher ein VBScript verwenden, etwa:
01.
Datei = "D:\TEST.txt"
02.
Von =  Array("61", "71", "91")
03.
Nach = Array("2",  "69", "45")
04.

05.
Set fso = CreateObject("Scripting.FileSystemObject")
06.
T = fso.OpenTextFile(Datei).ReadAll
07.

08.
For i = 0 To UBound(Von)
09.
    T = Replace(T, " " & Von(i) & vbCrLf, " " & Nach(i) & vbCrLf)
10.
Next
11.

12.
fso.CreateTextFile(Datei).Write T
Vorausgesetzt habe ich Windows-Zeilenumbrüche (CR + LF) und dass auch die letzte Zeile mit einem Umbruch endet, sowie dass vor jedem Suchbegriff ein Leerzeichen steht.

Die "Von"- und "Nach"-Listen müssen gleich viele Einträge haben, sind aber ansonsten beliebig erweiterbar, wobei natürlich zu beachten ist, dass auch mehrfach ersetzt würde - käme also etwa noch von "69" nach "23" hinzu, würden alle Zeilen, welche ursprünglich "69" enthalten haben, aber auch alle, welche von "71" auf "69" geändert wurden, den Wert "23" erhalten - daher ggf die Reihenfolge anpassen!

Achtung: Es wird, wie gewünscht, die Datei (ohne Sicherungskopie) ersetzt.

Grüße
bastla
Bitte warten ..
Mitglied: 64748
25.07.2011 um 22:45 Uhr
Hallo Lochkartenstanzer,

ich glaube das g (alle Vorkommen in der Zeile) kann man in dem Fall weglassen da ja gezielt nach dem Vorkommen am Zeilenende gesucht wird.

Markus
Bitte warten ..
Mitglied: koefinger
25.07.2011 um 23:08 Uhr
Spitze, herzlichen Dank an alle für die rasche Hilfe.

Hab' jetzt die Lösung von Bastla vorgezogen, da ich mit VB noch am ehesten zurechtkomme.

Funktioniert übrigens spitze... genauso wie ich es wollte.

1000Dank
Bitte warten ..
Mitglied: Lochkartenstanzer
26.07.2011 um 07:21 Uhr
Nun ja, das g komtm bei mir aus Gewohnheit immer mit dazu. Es würde natürlich auch ohne gehen.
Bitte warten ..
Ähnliche Inhalte
Entwicklung

Batch oder Powershell für .txt-Datei

gelöst Frage von freshman2017Entwicklung5 Kommentare

Hallo liebe Gemeinde, ich habe eine .txt-Datei, die aus einer Artikelnummer und einem Bildname bestehen soll. Ausgangsdatei (export.txt) ist ...

Batch & Shell

txt Listen Auswerten per Batch-Datei

gelöst Frage von Ivowie97Batch & Shell9 Kommentare

Hallo Zusammen Ich habe zwei .txt Listen mit Werten drin, die ich mit einer Batch-Datei auswerten möchte. In der ...

Windows 7

BATCH: Alter einer TXT-Datei bestimmen

gelöst Frage von ahstaxWindows 75 Kommentare

Hallo, wie bekomme ich mit einer DOS-Batch das Alter einer TXT-Datei bestimmt und lassen dann, bspw bei Alter >16h, ...

Batch & Shell

Wlan-adapter such algorithmus in batch

gelöst Frage von TicoWriteBatch & Shell7 Kommentare

Hallo zusammen, Ich möchte einen Wlan-adpater such algorithmus in batch erstellen, dazu fehlt mir aber der befehl in Dos. ...

Neue Wissensbeiträge
Humor (lol)
Und wie seid Ihr gegen Cyberattacken gewappnet?
Information von DerWoWusste vor 1 TagHumor (lol)5 Kommentare

aber wo ist der Hammer? :-)

Sicherheit
Ein weiterer Microsoft-Stirnklatscher
Information von DerWoWusste vor 2 TagenSicherheit7 Kommentare

Habe gerade einen Artikel zu einem Sicherheitsproblem gefunden, welches mir zu seiner Zeit (gepatcht 2015) wohl durchgerutscht ist. Es ...

Windows 10
Upgradepfade Windows 10 LTSC
Erfahrungsbericht von Datenreise vor 2 TagenWindows 10

Nur eine kurze Info, für diejenigen, die es interessiert, da es hierzu im Netz aus nachvollziehbaren Gründen nicht allzu ...

Administrator.de Feedback
Wartungsarbeiten heute Nacht (Update)
Information von Frank vor 2 TagenAdministrator.de Feedback10 Kommentare

Hallo User, durch Umbauarbeiten in unserem Rechenzentrum (am Backbone) kann es heute Nacht (14-15.01.2019) zu kurzen Ausfällen unserer Seite ...

Heiß diskutierte Inhalte
Microsoft
SFirm 4.0 auf Terminalserver startet für jeden angemeldeten Benutzer diverse Dienste
Frage von Frank84Microsoft25 Kommentare

Hallo zusammen, wir verwenden Sfirm 4.0 auf einem Terminalserver (der SQL Server ist auf einem separaten Server), das Problem ...

Windows 10
Windows 10 - kein Boot mehr nach Domänenaustritt
gelöst Frage von Ghost108Windows 1025 Kommentare

Hallo zusammen, habe hier eine Windows 10 Maschine, die ich gerne aus der Domäne austreten lassen möchte. Nach Austritt ...

Windows 10
VM wächst schnell von 14 auf 35 GB an - warum?
Frage von degudejungWindows 1018 Kommentare

Hallo, ich bin ein Freund schlanker VMs und setze daher gerne mit dem Erscheinen einer neuen Win10 Version - ...

Internet
Google-Suchergebnisse, Schnelleinblendung, woher kommt der Inhalt?
gelöst Frage von departure69Internet17 Kommentare

Hallo. Ich bin der Systembetreuer einer kleinen Gemeinde in Süddeutschland. Wir betreiben auch eine Leihbücherei. Eine Kundin hat letzten ...