So entfernen Sie Teilzeichenfolgen im Powershell-Skript

2

Dieses Skript ist fast das, was ich brauche:

$input_path = 'C:\Common'
$output_file = 'C:\Common\extracted.txt'
$regex = 'assets'

Get-ChildItem -Path $input_path -Filter *.txt 
| Select-String -Pattern $regex -AllMatches  
| Out-File $output_file -Force

Das Problem besteht darin, dass die Ausgabedatei beim Ändern des $ -Eingabepfads in "C: \ Common \ Data" Daten \ am Anfang der Zeile hinzufügt. Kann mir jemand sagen, wie ich diesen letzten Ordnernamen nicht in der Ausgabe haben soll?

ice1000
quelle

Antworten:

0
ls -Fo $input_path -Fi *.txt|Select-String -Patt $regex -All|%{$f=$_.path -split '\\';$f[-2]+'\;'+$_.filename+';'+$_.linenumber+';'+$_.line}|Out-File $output_file -Fo -width 400 -OutB 0x7FFFFFFF -EA 0
  • -OutB 0x7FFFFFFF - Größe des Dateizuweisungspuffers - Beschleunigen Sie das Erstellen und Auffüllen von Dateien
  • -width 400 - Linienbreite bei Datei, Standardgröße 80
  • -EA 0 = ErrorAction - überspringe alle Fehler

  • $f=$_.path -split '\\' - Geteilter vollständiger Dateipfad, Trennzeichen \ und Teile im Array speichern $f

  • $f[-2] - gebe das 2. Element am Ende des Arrays $ f (Dateiverzeichnis; in diesem Beispiel - zurück Data Verzeichnis)
  • $_.filename - Dateiname
  • $_.linenumber - Zeilennummer, in der das Suchmuster (Variable $ regex)
  • $_.line - Text in der Zeilennummer

  • ls -Fo $input_path -Fi *.txt & lt; = & gt; Get-ChildItem -Path $input_path -Filter *.txt

  • Select-String -Patt $regex -All & lt; = & gt; Select-String -Pattern $regex -AllMatches
STTR
quelle