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

Entfernen eines Strings vor einem bestimmten Zeichens in einer Textdatei

Frage Entwicklung Batch & Shell

Mitglied: Privex007

Privex007 (Level 1) - Jetzt verbinden

05.11.2014, aktualisiert 12:08 Uhr, 761 Aufrufe, 3 Kommentare

Hallo an alle Coder,

ich habe Probleme mit dem extrahieren eines String aus einer "txt"-Datei.
Ich habe folgende Zeilen untereinander stehen:

thues||||01722640180d2
err|Ing|Kietz||||0205656292-0001
hner||||020853272-001

Als Extrahierung möchte ich gerne folgendes in einer separaten "txt"-Datein erhalten:

01722640180d2
0205656292-0001
020853272-001

Also alles was vor dem letzten "|" steht soll weg inklusive dem "|"-Zeichen.

Wie muss ich mein Script ändern?

Ich habe folgendes für das Entfernen einer kompletten Zeile:

Const FOR_READING = 1
Const FOR_WRITING = 2
strFileName = "C:\Dokumente und Einstellungen\user\Eigene Dateien\Downloads\Scripts\Without_String.txt"
strCheckForString = UCase("String")

Set objFS = CreateObject("Scripting.FileSystemObject")
Set objTS = objFS.OpenTextFile(strFileName, FOR_READING)
strContents = objTS.ReadAll
objTS.Close

arrLines = Split(strContents, vbNewLine)
Set objTS = objFS.OpenTextFile(strFileName, FOR_WRITING)

For Each strLine In arrLines
If Not(Left(UCase(LTrim(strLine)),Len(strCheckForString)) = strCheckForString) Then
objTS.WriteLine strLine
End If
Next

Aber ich möchte ja nicht die ganze Zeile löschen, sondern nur einzelne Characters vor einem beliebigem Zeichen.

Geht das?

Danke für eure Hilfe!

Gruß

Privex007
Mitglied: rschwarz
05.11.2014 um 11:44 Uhr
Hi!
Wenn Perl auch in Frage kommt, dann geht das (u.a.) so:

#!/usr/bin/perl
use strict();
use warnings();

my $file=$ARGV[0];
die("Bitte Datei mit angeben\n") if(! $file);
die("Datei $file existiert nicht") if(! -f $file);

open(IN, $file) || die("Kann Datei $file nicht oeffnen");
open(OUT, ">".$file.".new") || die("Kann Ausgabedatei nicht schreiben");

while(my $line=<IN>) {
chomp($line);
$line =~ s/.*\|//;
print "Debug: ".$line."\n";
print OUT $line."\n";
}
close(IN);
close(OUT);

VG!
Ralf
Bitte warten ..
Mitglied: colinardo
LÖSUNG 05.11.2014, aktualisiert um 12:08 Uhr
Hallo privex,
kein Problem:
01.
Dim fso,regex,matches,match,objOut 
02.
Const FILEIN = "C:\temp\test.txt" 
03.
Const FILEOUT = "C:\temp\test_out.txt" 
04.
 
05.
Set fso = CreateObject("Scripting.Filesystemobject") 
06.
Set regex = CreateObject("vbscript.regexp") 
07.
 
08.
'Textdatei einlesen 
09.
strContent = fso.OpenTextFile(FILEIN,1).ReadAll() 
10.
 
11.
'Regex Parameter setzen 
12.
regex.Global = True: regex.IgnoreCase = True: regex.MultiLine = True 
13.
regex.Pattern = "\|([^\|]+)$" 
14.
 
15.
'Regex ausführen 
16.
set matches = regex.Execute(strContent) 
17.
 
18.
If matches.count > 0 Then 
19.
	Set objOut = fso.OpenTextFile(FILEOUT,2,True) 
20.
	For each match in matches 
21.
		objOut.WriteLine match.submatches(0) 
22.
	Next 
23.
	objOut.Close 
24.
End If 
25.
 
26.
MsgBox "Fertig" 
27.
Set fso = Nothing 
28.
Set regex = Nothing
Grüße Uwe
Bitte warten ..
Mitglied: Privex007
05.11.2014 um 12:08 Uhr
Perfekt danke!!!!
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Batch & Shell
Powershell - In Textdatei suchen und ersetzen

Frage von Raaja89 zum Thema Batch & Shell ...

Batch & Shell
gelöst Appx aus Image auslesen und entfernen (9)

Frage von Markus2016 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...