Entfernen eines Strings vor einem bestimmten Zeichens in einer Textdatei
Hallo an alle Coder,
ich habe Probleme mit dem extrahieren eines String aus einer "txt"-Datei.
Ich habe folgende Zeilen untereinander stehen:
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
ich habe Probleme mit dem extrahieren eines String aus einer "txt"-Datei.
Ich habe folgende Zeilen untereinander stehen:
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 253893
Url: https://administrator.de/forum/entfernen-eines-strings-vor-einem-bestimmten-zeichens-in-einer-textdatei-253893.html
Ausgedruckt am: 23.04.2025 um 09:04 Uhr
3 Kommentare
Neuester Kommentar
Hi!
Wenn Perl auch in Frage kommt, dann geht das (u.a.) so:
#!/usr/bin/perl
use strict();
use warnings();
my $file=$ARGV;
die("Bitte Datei mit angeben\n") if(! $file);
die("Datei $file existiert nicht") if(! -f $file);
while(my $line=<IN>) {
chomp($line);
$line =~ s/.*\|//;
print "Debug: ".$line."\n";
print OUT $line."\n";
}
close(IN);
close(OUT);
VG!
Ralf
Wenn Perl auch in Frage kommt, dann geht das (u.a.) so:
#!/usr/bin/perl
use strict();
use warnings();
my $file=$ARGV;
die("Bitte Datei mit angeben\n") if(! $file);
die("Datei $file existiert nicht") if(! -f $file);
while(my $line=<IN>) {
chomp($line);
$line =~ s/.*\|//;
print "Debug: ".$line."\n";
print OUT $line."\n";
}
close(IN);
close(OUT);
VG!
Ralf
Hallo privex,
kein Problem:
Grüße Uwe
kein Problem:
Dim fso,regex,matches,match,objOut
Const FILEIN = "C:\temp\test.txt"
Const FILEOUT = "C:\temp\test_out.txt"
Set fso = CreateObject("Scripting.Filesystemobject")
Set regex = CreateObject("vbscript.regexp")
'Textdatei einlesen
strContent = fso.OpenTextFile(FILEIN,1).ReadAll()
'Regex Parameter setzen
regex.Global = True: regex.IgnoreCase = True: regex.MultiLine = True
regex.Pattern = "\|([^\|]+)$"
'Regex ausführen
set matches = regex.Execute(strContent)
If matches.count > 0 Then
Set objOut = fso.OpenTextFile(FILEOUT,2,True)
For each match in matches
objOut.WriteLine match.submatches(0)
Next
objOut.Close
End If
MsgBox "Fertig"
Set fso = Nothing
Set regex = Nothing