privex007
Goto Top

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

Content-Key: 253893

Url: https://administrator.de/contentid/253893

Printed on: April 16, 2024 at 07:04 o'clock

Member: rschwarz
rschwarz Nov 05, 2014 at 10:44:15 (UTC)
Goto Top
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
Member: colinardo
Solution colinardo Nov 05, 2014 updated at 11:08:33 (UTC)
Goto Top
Hallo privex,
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
Grüße Uwe
Member: Privex007
Privex007 Nov 05, 2014 at 11:08:45 (UTC)
Goto Top
Perfekt danke!!!!