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, 4547 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst PowerShell EventLog informationen filtern (1)

Frage von derhoeppi zum Thema Batch & Shell ...

Windows 10
Powershell 5 BSOD (8)

Tipp von agowa338 zum Thema Windows 10 ...

Datenbanken
Access Checkbox mit Kombifeld und dann filtern

Frage von atomas42 zum Thema Datenbanken ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (14)

Frage von liquidbase zum Thema Windows Update ...

DSL, VDSL
Problem mit variernder Internetgeschwindigkeit (12)

Frage von schaurian zum Thema DSL, VDSL ...