Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Frage Microsoft

Mitglied: koefinger

koefinger (Level 1) - Jetzt verbinden

25.07.2011 um 21:30 Uhr, 7321 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: hmarkus
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: hmarkus
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 hmarkus:
> 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: hmarkus
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
Per Batch eine XLS-Datei in eine TXT-Datei umwandeln (5)

Frage von skiing69 zum Thema Batch & Shell ...

Batch & Shell
Batch-Variable nach Stichworten aus TXT Datei durchsuchen (3)

Frage von 126594 zum Thema Batch & Shell ...

Batch & Shell
gelöst Zeiten in .txt datei auslesen und Differenz berechnen (14)

Frage von meex87 zum Thema Batch & Shell ...

Neue Wissensbeiträge
Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
VPN Tunnel aufbauen (16)

Frage von Hajo2006 zum Thema LAN, WAN, Wireless ...

Router & Routing
ASUS RT-N18U mit VPN Client hinter Fritzbox - Portforwarding (14)

Frage von marshall75000 zum Thema Router & Routing ...

Microsoft Office
Saubere HTML aus Word-Dokument (13)

Frage von peterpa zum Thema Microsoft Office ...

E-Mail
gelöst Probleme beim E-Mail Empfang (12)

Frage von TommyB83 zum Thema E-Mail ...