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, 774 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 ..
Ähnliche Inhalte
E-Mail
gelöst Automatischer Emailversand aus einem bestimmten Ordner (6)

Frage von GoTTn1 zum Thema E-Mail ...

Batch & Shell
gelöst Teil eines Strings als Variable setzen (2)

Frage von tHe-jAy zum Thema Batch & Shell ...

Batch & Shell
Spoiler in textdatei automatisch über Powershellscript einfügen (5)

Frage von Dr.Byte 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
Exchange Server
Microsoft Exchange Weiterleitung mit anderer primären E-Mail Adresse (14)

Frage von Rene12345 zum Thema Exchange Server ...

Windows Userverwaltung
gelöst Wie verfahrt Ihr mit den Windows-Benutzerkonten und -dateien von ausgeschiedenen Mitarbeitern? (14)

Frage von Bl0ckS1z3 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
Devolo DLAN 500 pro Wireless+ (13)

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

Microsoft
gelöst Subnetting: In welchem Subnetz befindet sich die IP? (12)

Frage von winler zum Thema Microsoft ...