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, 8000 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
Batch & Shell

Letzte Zeichen in einer txt-Datei per Script entfernen

Frage von SvenHThomsenBatch & Shell2 Kommentare

Hallo Admins, ich habe folgendes Problem: Wenn ich eine .txt-Datei mit dem Windows Explorer in ein anderes Serverlaufwerk kopiere, ...

Batch & Shell

Letzte Zeile einer .txt in eine andere .txt ausschneiden per Batch

gelöst Frage von AlexIOTBatch & Shell4 Kommentare

Hallo zusammen, zu meinem obrigen Thema habe ich leider nur in Richtung löschen und nicht in Richtung ausschneiden etwas ...

Batch & Shell

Tilde Zeichen per Batch ersetzen

gelöst Frage von Blackhawk386Batch & Shell6 Kommentare

Hi! Ich habe eine Datei in Textform, in der Umlaute per Batch umgewandelt werden müssen. Dazu habe ich hier ...

Entwicklung

Suchen und ersetzen als Batch oder VBA

gelöst Frage von ZinedineEntwicklung22 Kommentare

Hallo, bin hier neu im Forum und ein absoluter Laie was Programmierung betrifft Habe deswegen auch ein großes für ...

Neue Wissensbeiträge
Humor (lol)

Das neue Miniatur Wunderland OFFICIAL VIDEO - worlds largest model railway - railroad

Information von StefanKittel vor 1 StundeHumor (lol)

Hallo, wer noch nie im Miniatur Wunderland war, sollte es dringend mal nachholen. Es gibt eine neues Video. Viele ...

Exchange Server

Exchange 2010-2019 Sicherheitslücke durch Regkey löschen schließen

Information von sabines vor 12 StundenExchange Server1 Kommentar

Unter ist eine Lücke im Exchange 2010-2019 beschrieben, die durch das Löschen eines reg keys geschlossen werden kann. In ...

Windows Server
Erneutes Release von WS2019 und Win10 v1809
Tipp von IT-Pro vor 1 TagWindows Server3 Kommentare

Hi, nachdem der Windows Server 2019 und Windows 10 in der Version 1809 aufgrund von verschwinden von Dateien nach ...

CPU, RAM, Mainboards
Spectre Update Tool für ältere PCs
Information von sabines vor 1 TagCPU, RAM, Mainboards6 Kommentare

Mit Hilfe eines Tools wird der betreffende PC permanent von einem USB Stick gestartet, der ein passendes Microcode Update ...

Heiß diskutierte Inhalte
Windows Server
Lohnt sich eine Domäne für uns?
Frage von BowsetteWindows Server15 Kommentare

Hallo, ich arbeite in einem kleinen Unternehmen mit mehr als 5 und weniger als 10 Mitarbeitern, also Small Business ...

Java
Testautomatisierung
gelöst Frage von WPFORGEJava15 Kommentare

Hallo, nehmen wir an, es gibt eine Webseite mit einer Karte und einem Suchfeld. Nun wird in das Suchfeld ...

Viren und Trojaner
Office365 Trojaner Analyse
Frage von ZeppelinViren und Trojaner12 Kommentare

Liebe Community, ich wende mich an euch, um mehr über den Office365 Trojaner zu erfahren, welcher grade seine Runden ...

Exchange Server
PST Datei enthält weder Betreff noch Absender
gelöst Frage von SSamuelExchange Server10 Kommentare

Hallo zusammen, ich versuche aus einer wiederhergestellten Exchange (SBS2011) .EDB mit dem Programm "Kernel for Exchange von Nucleus" eine ...