Top-Themen

Aktuelle Themen (A bis Z)

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 In Textdateien String suchen und ersetzen

Mitglied: Browserlauser

Browserlauser (Level 1) - Jetzt verbinden

22.05.2019, aktualisiert 11:54 Uhr, 289 Aufrufe, 7 Kommentare, 2 Danke

Hallo,

ich habe folgendes Problem. Ich habe ein Verzeichnis in dem viele verschiedene Dateien liegen. Darunter auch Textdateien.
Diese sind immer gleich aufgebaut und enthalten zweimal ein Datum ungefähr so:

Text
Text
ErstesDatum=01.01.2018
Text
Text
Text
Text
ZweitesDatum=20.08.2015
Text
...

Nun muss das Zweite Datum von unten das ErsteDatum oben ersetzen. Also als Ergebnis ungefähr so:

Text
Text
ErstesDatum=20.08.2015
Text
Text
Text
Text
ZweitesDatum=20.08.2015
Text
...

Das Ersetzen des Datums muss in allen diesen Dateien (insges. über 200.000) erfolgen.
Irgendwie bekomme ich das aber nicht hin. Würde mich über eure Hilfe freuen. Danke.
Mitglied: Kraemer
22.05.2019 um 11:30 Uhr
Moin,
Zitat von Browserlauser:
ungefähr so:
ungefähr hilft ungefähr gar nicht. Poste bitte ein anonymisiertes 1:1-Beispiel

Das Ersetzen des Datums muss in allen diesen Dateien (insges. über 200.000) erfolgen.
an sich kein Problem, wenn der Aufbau der Datei das her gibt - siehe mein 1. kommentar

Irgendwie bekomme ich das aber nicht hin. Würde mich über eure Hilfe freuen. Danke.
klar. Zeig mal, was du bisher hast

Gruß
Bitte warten ..
Mitglied: Browserlauser
22.05.2019, aktualisiert um 12:40 Uhr
Hi,

die Datei sieht so aus:

[Info]
Indext=nein
Key=
Archivtyp=
ErstesDatum=14.05.2019
Format=5
Seiten=1
Erfasser=xyz
Schlagwort=
System=xyz
Name=xyz
ZweitesDatum=08.05.2014
Beleg=123456789
Personennummer=
Name=
Vorname=
Geburtsdatum=
Version=1

Ich würde das gern so lösen:

$Datum1 als Variable setzen
$Datum2 als Variable setzen

und dann Datum 1 mit Datum 2 ersetzen per:

get-ChildItem *.txt | Foreach-Object {Get-Content $_ | Out-String | Foreach-Object {($Datum1.Replace,$Datum2)} | Set-Content $_}

Aber wie bekomme ich nur das Datum nach dem = in die Variable?
Bitte warten ..
Mitglied: Kraemer
LÖSUNG 22.05.2019 um 13:37 Uhr
Zitat von Browserlauser:
get-ChildItem *.txt | Foreach-Object {Get-Content $_ | Out-String | Foreach-Object {($Datum1.Replace,$Datum2)} | Set-Content $_}

ganz so einfach geht das nicht

01.
Get-ChildItem -Path "C:\temp\4" -Filter "*.txt" | ForEach-Object {
02.
    $FileName=$_.FullName
03.
    $Document=Get-Content $FileName
04.
    $Document | %{
05.
        if ($_ -match "ErstesDatum=(\d{2}.\d{2}.\d{4})" -eq $true){
06.
            $ErstesDatum=$Matches[1]
07.
        }
08.
        if ($_ -match "ZweitesDatum=(\d{2}.\d{2}.\d{4})" -eq $true){
09.
            $ZweitesDatum=$Matches[1]
10.
        }
11.
    }
12.
    $Document=$Document.replace("ErstesDatum=$ErstesDatum","ErstesDatum=$ZweitesDatum")
13.
    Set-Content -Value $Document -Path $FileName
14.
}
Bitte warten ..
Mitglied: NetzwerkDude
LÖSUNG 22.05.2019 um 14:09 Uhr
Falls man PowerShell5 (ab W10) oder Core (Multiplattform) hat:

01.
#Alle Dateien einsammeln
02.
$Files = Get-ChildItem "C:\pfad\zu\den\datein\"
03.

04.
#den Code für jede Datei ausführen
05.
foreach ($File in $Files) {
06.

07.
#Inhalt einlesen
08.
    $Inhalt = Get-Content $File
09.

10.
#Muster 'irgendwelche buchstaben mehrfach, dannach ein gleich, dannach ein datum, wobei nur das Datum als match ansehen' suchen
11.
    $RegExPattern = '(?<=\w+\=)\d{2}\.\d{2}\.\d{4}'
12.

13.
#Im Text nach nach Muster suchen
14.
    $Result = [regex]::Matches($Inhalt, $RegExPattern)
15.

16.
#das erste vorkommen (0 = erster eintrag im array) des musters in die Variable ErstesDatum schreiben, das zweite vorkommen in ZweitesDatum schreiben
17.
    $ErstesDatum = $Result[0].Value; $ZweitesDatum = $Result[1].Value
18.

19.
#Inhalt modifizieren, indem das erste vorkommen mit dem zweiten vorkommen ersetzt wird
20.
    $Inhalt = $Inhalt -replace "$ErstesDatum","$ZweitesDatum"
21.

22.
# den modifizierten inhalt zurück in die datei schreiben
23.
    Set-Content -Path $File -Value $Inhalt
24.
}
Der Code hat aber keinerlei fehlerhandling, also use with caution
Bitte warten ..
Mitglied: Browserlauser
22.05.2019 um 14:16 Uhr
Genial es funktioniert. ) Besten Dank. Das hab ich mir dann vlt. doch etwas zu einfach gedacht. Aber so... perfekt
Bitte warten ..
Mitglied: Kraemer
22.05.2019 um 14:18 Uhr
Zitat von NetzwerkDude:
Der Code hat aber keinerlei fehlerhandling, also use with caution
Wenn es mal nur das wäre. Dein Ansatz geht davon aus, dass erstens die o.g. Reihenfolge eingehalten wird UND zweitens das Datum nur einmal in der Datei vorkommt.
Bitte warten ..
Mitglied: NetzwerkDude
22.05.2019 um 14:27 Uhr
mh, wir gehen ja beide von der Vorgabe des TO aus, und beide Codes gehen, also chill out man
Bitte warten ..
Ähnliche Inhalte
Batch & Shell

PowerShell Array ind String umwandeln und in Textdatei ausgeben

gelöst Frage von derhoeppiBatch & Shell8 Kommentare

Hallo, folgende Thematik habe ich heute vor mir. Ich habe ein Array mit Integer-Werten. Die Größe des Array ist ...

Microsoft Office

Excel Such- und Vergleichsfunktion

gelöst Frage von oesi1989Microsoft Office15 Kommentare

Hallo zusammen, ich habe 2 Tabellen mit Name, Vorname und Arbeitgeber. 1. Tabelle Name Vorname Geb-Datum Arbeitgeber Straße Ort ...

Batch & Shell

Grep Textdatei nach mehreren Strings durchsuchen je String Anzahl der Zeilen ausgeben

gelöst Frage von cuilsterBatch & Shell8 Kommentare

Hallo lieber Foristen, Folgendes konnte ich bereits erfolgreich eruieren. Grep sucht in der Datei nach "ocsp" und spuckt mir ...

Exchange Server

Such-Index nach Neuerstellung defekt

Frage von CoverianExchange Server

Guten Morgen zusammen, wir haben hier aktuell ein Problem das mir schlaflose Nächte bereitet. Es handelt sich um einen ...

Neue Wissensbeiträge
Windows 10
Windows 10: Netzwerk zeigt Fehler 0x80070035
Tipp von anteNope vor 1 StundeWindows 104 Kommentare

Moin zusammen, ich hatte gerade mal wieder das Vergnügen mit dem obigen Fehler. Unter Borns Blog ist das beschreiben: ...

Windows 10

Bug: Windows 10 Enterprise LTSC erhält Funktionsupdate angeboten

Information von kgborn vor 18 StundenWindows 104 Kommentare

Der Fehler ist mittlerweile zwar korrigiert, aber ich denke, ich stelle die Info doch mal hier für Leute ein, ...

Viren und Trojaner

Entschlüsselungs-Tool für aktuelle GandCrab-Version verfügbar

Information von MrCount vor 23 StundenViren und Trojaner

Für alle Betroffenen gibt es offenbar ein Tool zur Entschlüsselung. Dann wird wohl die nächste version von GandCrap nicht ...

LAN, WAN, Wireless
Sophos RED50 stürzt ab und ist danach tot
Information von Ex0r2k16 vor 4 TagenLAN, WAN, Wireless3 Kommentare

Hey, nach meinem Thread bin ich durch Zufall auf das hier gestoßen: Also wenn ihr UTMs und RED50's im ...

Heiß diskutierte Inhalte
Viren und Trojaner
Gefahr - Risiko zwischen doc xls und docx xlsx
Frage von Asker06Viren und Trojaner33 Kommentare

Guten Tag, ich wollte wissen ob die .doc und .xls datein viel gefährlicher sind als .docx und .xlsx?? Ich ...

Sicherheit
Wie sichert (verschlüsselt) ihr eure Passwörter ?
gelöst Frage von decehakanSicherheit20 Kommentare

Hallo Admins, Mittlerweile hat man für jeden Dienst seine Zugangsdaten, sei es Amazon, Bank, FB, etc , vor allem ...

Windows Netzwerk
Standardgateway bei Clients mit statischer IP Adresse ändern
Frage von sammy65Windows Netzwerk17 Kommentare

Hallo miteinander, Wie kann ich über eine GPO die Standardgateway an meinen Clients ändern? Ich habe das versucht?: Es ...

Netzwerkmanagement
VLAN zwischen HP Switchen
gelöst Frage von SykoNFNetzwerkmanagement15 Kommentare

Moin Moin, ich versuche eine ganz einfachen Aufbau von VLAN zu erreichen. Ich habe zwei Switche, HP 1920-48G und ...