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

Textdateien mit Powershell Filtern

Frage Entwicklung Batch & Shell

Mitglied: BlackNight

BlackNight (Level 1) - Jetzt verbinden

19.07.2012 um 15:35 Uhr, 4692 Aufrufe, 3 Kommentare

Hallo, erstmal Danke für die viel oft sehr nützlichen Beiträge aller Mitstreiter hier.

Folgendes "Problem", ich hab eine Text Datei die von einem Backup generiert wird. Die Datei hat knapp 1500 Zeilen, wovon aber nur ein Bruchteil von Interesse ist. Es werden lediglich die ersten 2 Zeilen und ca. die letzten 140 Zeilen benötigt.

Nun hab ich das schon mal mit einem Script per Powershell versucht zu lösen. Leider bekomm ich es nicht hin die letzten Zeilen zu selektieren und mit in die Ausgabedatei zu schreiben.
So sieh das Skript zum jetzigen Zeitpunkt aus:

  1. Filterscript für Backupfile
clear-Host
#Variablen deklarieren
$Quelle="D:\Projekte\Testlauf\050.txt"
$Ziel="D:\Projekte\Testlauf\050_Neu1.txt"
#Daten einlesen
$Inhalt = Get-Content -Path $Quelle -TotalCount 2
$Inhalt | Set-Content -Path $Ziel
#Bis hier ist alles OK die 2 Zeilen landen in der Zieldatei.
#Nun sollte nach Möglichkeit die Datei bis zum gesuchten “Keyword” durchsucht # und ab da, alles bis zum Ende der Datei auch mit in die Zieldatei #geschrieben werden.
$Inhalt = get-content -Path $Quelle | Select-String -Pattern "Keyword"
$Inhalt | Set-Content -Path $Ziel
Ich hoffe das ist halbwegs nachvollziehbar beschrieben und das mir jemand den entscheidenden Geistigen Anstoß geben kann.

Danke schon mal. Gruß

Mitglied: Connor1980
19.07.2012 um 17:15 Uhr
Hallo,

kannst du bitte deinen code Zwecks besserer Lesbarkeit formatieren?
Um es besser zu verstehen wäre noch hilfreich, wie der Inhalt aussieht, ein paar Zeilen genügen ja - also einmal wie sieht die Quelle aus und wie soll das Ziel aussehen?

Zum Thema: evtl. hilft die get-help about_split weiter, mit dem split Operator kannst du Strings auftrennen.

Grüße
Bitte warten ..
Mitglied: BlackNight
20.07.2012, aktualisiert 30.07.2012
Hallo Connor1980,

kann ich natürlich, war gestern etwas im Streß und hab ganicht daran gedacht.
Also hier nochmal Formatiert und mit Text aus der Quelldatei.

clear-Host
#Variablen deklarieren
$Quelle="D:\Projekte\Testlauf\050.txt"
$Ziel="D:\Projekte\Testlauf\050_Neu1.txt"
#Daten einlesen
$Inhalt = Get-Content -Path $Quelle -TotalCount 2
$Inhalt | Set-Content -Path $Ziel


Bis hier ist alles OK die 2 Zeilen landen in der Zieldatei.
Nun sollte nach Möglichkeit die Datei bis zum gesuchten “Keyword” durchsucht und ab da, alles bis zum Ende der Datei auch mit in die Zieldatei geschrieben werden.

$Inhalt = get-content -Path $Quelle | Select-String -Pattern "Keyword"
$Inhalt | Set-Content -Path $Ziel


Hier ein ausschnitt aus der Quelldatei.

Das sind die ersten 4 Zeilen von denen die ersten 2 beötigt werden, was aber wie gesagt ja funktioniert.

;[BACKUP_V2.0]
; Ident: BPS=S1:$150'PS, IDC=116, VRS=0x12
;[TASK_1..199]
; Stamp: dat=05-Jul-12/Do, tim=12:52, stp=1, rsn=SaFi


ab hier ein Ausschnitt kurz vor dem Keyword ab dem der Text mitgenommen werden soll.


DSP40.TXU = 0
DSP40.DEST = $003.MV !$000.MV
DSP40.DVAL(1) = 0 !.
DSP40.DVAL(2) = @PLT40.PSTA!.
;[END_DISPATCHCAT]

ab hier soll dann der Text bis zum ende der Datei mitgenommen werden. Das ";[TIME_SWITCH_CATALOGUES]" ist in der Datei immer einmalig, also kann dieses "Keyword" zum finden des Anfangs verwendet werden.


;[TIME_SWITCH_CATALOGUES]
;[TIMESWITCH_CAT]
; Stamp: dat=05-Jul-12/Do, tim=12:59, stp=25, rsn=SaFi
;TSC
;TSC.VISUM= BPS
;TSC.WHEN= 05.07.12 12:59:41
TSC.SIG = 50
;TSC.ACT = 1
-- TSC.ACTSDC = 0
.SDC
SDC.SIG = 4
20 01-MAY !SU
;[TSC_DST20]
EDIT DST20 ; -- Optimierte Zone HK West
;DST20.VISUM= BPS
;DST20.WHEN= 05.07.12 12:59:43
DST20.SIG = 12
DST20.ACT = 1
DST20.TA = @TCR2.TA
DST20.TYP = 5
DST20.TXI = #p3440
DST20.TXI2 = #p3138
DST20.TODAY = +00:00
DST20.TDACT = 0
-- DST20.ACTCAT = WDC
-- DST20.ACTIDX = 6
DST20.MODE = 1
DST20.PAR = SOPST !SOMOD !. !. !.
DST20.DFV = 1 !. !. !. !.
.DST20.WDC
1 MO !01:40..01:50 !0 !. !. !. !.
2 MO !02:50..03:00 !0 !. !. !. !.
3 MO !04:00..17:50 !0 !. !. !. !.
4 TU !03:30..03:40 !0 !. !. !. !.
5 TU !05:00..17:50 !0 !. !. !. !.
6 WE..TH !05:00..18:00 !0 !. !. !. !.
.......
.......
.......
.......usw.


Hoffe das ist nun Aussagekräftiger.

Danke Gruß

Keiner eine Idee?
Bitte warten ..
Mitglied: BlackNight
02.08.2012 um 15:13 Uhr
Also ich muss echt sagen ich bin ein wenig Enttäuscht, will keiner Antworten oder ist es schlichtweg über PowerShell nicht lösbar. 416 Aufrufe und keine Antwort, kommt schon das kann ja nicht sein.

Gruß
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Powershell Get-Content Inhalt filtern (1)

Frage von derhoeppi zum Thema Batch & Shell ...

Batch & Shell
Batch mit forfiles - Dateiendung filtern - Dateien löschen (2)

Frage von mschaedler1982 zum Thema Batch & Shell ...

Batch & Shell
Frage zum Einsatz von Powershell, welche Version verwenden (3)

Frage von Penny.Cilin zum Thema Batch & Shell ...

Microsoft
Drucker Über Powershell installieren (9)

Frage von Asker06 zum Thema Microsoft ...

Neue Wissensbeiträge
Batch & Shell

Batch als Dienst bei Systemstart ohne Anmeldung ausführen

(3)

Tipp von tralveller zum Thema Batch & Shell ...

Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

(1)

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(9)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Heiß diskutierte Inhalte
Exchange Server
Exchange 2016 Standard Server 2012 R2 Hetzner Mail (41)

Frage von Datsspeed zum Thema Exchange Server ...

Windows 7
gelöst Lokales Adminprofil defekt (25)

Frage von Yannosch zum Thema Windows 7 ...

Off Topic
gelöst Fachzeitschriften als E-Book oder hardcoded? (11)

Frage von KowaKowalski zum Thema Off Topic ...

Windows 10
Windows Store Apps ohne Windows Store installieren (10)

Frage von keefien zum Thema Windows 10 ...