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

Ein Zeichen in einer SEHR großen TXT Datei ersetzen

Frage Entwicklung Batch & Shell

Mitglied: moebelwachs

moebelwachs (Level 1) - Jetzt verbinden

01.05.2012 um 11:46 Uhr, 4928 Aufrufe, 13 Kommentare

Moin,

folgendes Problem:
In einer recht großen textdatei (150000 Zeilen x 300 Zeichen) muß ein ";" gegen ein "|" ausgetauscht werden. Ich hab schon mehrere Texteditoren probiert, die alle streiken. Excel geht auch nicht, weil hier der Trenner "|" nicht explizit verwendet werden kann.
Meine Frage: Wie kann ich diese Aufgabe per Batch lösen ?
Danke vorab,
schöne grüße Wolfgang
Mitglied: schattenhacker
01.05.2012 um 11:52 Uhr
hi,

da streiken viele Programme, excel hätte ich gar nicht erst probiert.
Ich habe das mal gelöst, indem man die Zeilen in eine Datenbank einliest und die Felder wie der mit "" exportiert.
Ist etwas Arbeit, aber wenn es nicht zu viele Felder sind benötigst Du weniger zeit als mit dem Rumprobieren div. Programme.

gruss jo
Bitte warten ..
Mitglied: schattenhacker
01.05.2012 um 11:56 Uhr
ausserdem: wenn du in einem Feld ein , drin hast dann klappt das eh nicht.
also bei ( soll keine Werbung sein )" "real, " aber nicht bei aldi" bringt deine Felder total durcheinander.
die erwähnte Möglichkeit gibt dir die Chance, gleich die Inhalte aufzuräumen.
Bitte warten ..
Mitglied: 106009
01.05.2012 um 12:14 Uhr
Zitat von moebelwachs:
Ich hab schon mehrere Texteditoren probiert, die alle streiken.

Dann hast du offenbar nicht die richtigen Editoren ausprobiert.
Versuch mal EditPad(-lite).

Gruß
Bitte warten ..
Mitglied: laster
01.05.2012 um 12:15 Uhr
Hallo,

das ist eine Textdatei mit einer Größe von etwa 42 MB?
Hast Du schon mal Ultraedit (Editor) oder "InfoRapid Suchen & Ersetzen" probiert? Letzteres Programm kann das sicher (und dazu in vielen Dateien - wenn es nötig ist).

Gruß
Lars
Bitte warten ..
Mitglied: gemini
01.05.2012 um 12:28 Uhr
Hallo Wolfgang,

ich würde Notepad++ nehmen.
Eine Textdatei mit ~ 400MB (ca. 930.000 Zeilen) konnte ich damit problemlos öffnen.

Gruß,
gemini
Bitte warten ..
Mitglied: mak-xxl
01.05.2012 um 12:55 Uhr
Moin Wolfgang,

wenn es kein Editor sein muss, kann 'sed' unter Win (Gnu-Pack) oder Linux helfen:

sed -u -i "~s|;|\||g" datei.txt
Das Ganze auf der Befehlszeile oder als Batch Einzeiler.

Freundliche Grüße von der Insel - Mario
Bitte warten ..
Mitglied: moebelwachs
01.05.2012 um 13:53 Uhr
Danke für alle Tips, sed war die Lösung !
Die ganzen Editoren schmieren ab, obs nun Notepad++, Ultraedit, Excel ... ist.

Wieder was gelernt ;)
Danke,
Schöne Grüße Wolfgang
Bitte warten ..
Mitglied: pieh-ejdsch
01.05.2012 um 13:54 Uhr
moin Wolfgang,


als Batch in etwa so:
01.
@echo off 
02.
setlocal disabledelayedexpansion 
03.
if "%~1" == "" echo Syntaxfehler. Datei angeben!&goto :eof 
04.
if not exist "%~1" echo Datei nicht gefunden!&goto :eof 
05.
findstr /n "^" "%~1" > "%~1.LN" 
06.
07.
for /f "usebackq tokens=*" %%i in  ("%~1.LN") do ( 
08.
  set "Zeile=%%i" 
09.
  setlocal enabledelayedexpansion 
10.
  set "Zeile=!Zeile:;=|!" 
11.
  echo\!Zeile:*:=! 
12.
  endlocal 
13.
14.
)>"%~1-Neu.TXT" 
15.
del "%~1.LN"
[Edit]
ein sekündchen zu spät ...
[/Edit]

Gruß Phil
Bitte warten ..
Mitglied: moebelwachs
01.05.2012 um 14:07 Uhr
Trotzdem .. Merci ;)
Bitte warten ..
Mitglied: bastla
01.05.2012 um 14:38 Uhr
Hallo moebelwachs!

Um die gesammelten Werke zu komplettieren als weitere Alternative mit Bordmitteln die VBS-Variante dazu:
01.
Ein = "D:\Datei_alt.txt" 
02.
Aus = "D:\Datei_neu.txt" 
03.
Von = ";" 
04.
Nach = "|" 
05.
 
06.
Set fso = CreateObject("Scripting.FileSystemObject") 
07.
Set E = fso.OpenTextFile(Ein) 
08.
Set A = fso.CreateTextFile(Aus) 
09.
Do While Not E.AtEndOfStream 
10.
    A.WriteLine Replace(E.ReadLine, Von, Nach) 
11.
Loop
Grüße
bastla
Bitte warten ..
Mitglied: FOrtwein
03.05.2012 um 14:56 Uhr
Hallo,

warum nicht einfachste aller Lösungen

MICROSOFT WORD?!?!?!

Da kannst du sogar während dem Landen der Datei schon Änderungen vornehmen.

Gruß
Frank
Bitte warten ..
Mitglied: moebelwachs
03.05.2012 um 20:36 Uhr
...das hab ich doch glatt der wissenschaft halber noch ausprobiert
Nach 683 Seiten meinte Word(2010), daß ich die maximale Anzahl Seiten überschritten hätte.
Die Entwurfsansicht funktionierte und zählte 3.239.237 Zeichen. WORD selbst war nicht mehr sehr
kooperativ, die meiste Zeit verbrachte es mit "keiner Rückmeldung" trotz 4GB RAM und einer angegeben Dateigröße von
169 MB (rein Text, ohne Bilder).

Für Forscher zum Vergleich die von MS zur Verfügung gestellten Werte:
http://support.microsoft.com/kb/211489/de

Grüße
Bitte warten ..
Mitglied: pieh-ejdsch
03.05.2012 um 21:48 Uhr
Hallo Frank,

das soll ja hier nicht die Aufgabe sein, eine so große Datei auf den Bildschirm darzustellen.
Word muss ja erst alles Durchnudeln und im Speicher halten. Etwa 3 mal Dateigröße ...

So ein Script frag auch nicht erst nach der Codierung.
Beim Ersetzen mit den Scripten werden die Dateien geöffnet, gelesen und geschlossen (Beim Batch zum Beispiel jedesmal je Zeile)
Die Ergebnisse werden in eine Neue Datei geschrieben.

Ein Abarbeiten Zeile für Zeile ist so im Endeffekt viel effektiver.

Gruß Phil
Bitte warten ..
Neuester Wissensbeitrag
Microsoft

Lizenzwiederverkauf und seine Tücken

(5)

Erfahrungsbericht von DerWoWusste zum Thema Microsoft ...

Ähnliche Inhalte
Webentwicklung
gelöst HTML Output in eine txt Datei mit VisualBasicScript (2)

Frage von coca22COCA zum Thema Webentwicklung ...

Batch & Shell
Merkwürdige Zeilenformatierung in txt Datei (3)

Frage von miczar zum Thema Batch & Shell ...

Batch & Shell
gelöst In Batchdatei Variablen befüllen - mit Werten aus einer TXT-Datei (6)

Frage von donnyS73lb zum Thema Batch & Shell ...

Batch & Shell
gelöst Einzelne Zeilen in txt Datei speichern und auslesen (7)

Frage von noah1400 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (17)

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

Windows Netzwerk
Windows 10 RDP geht nicht (16)

Frage von Fiasko zum Thema Windows Netzwerk ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...