Löschen Sie carriage return in der powershell
Ich Probleme löschen carriage return innerhalb einer text-Datei. Ich möchte löschen Sie carriage return "nur Meldung". Ich brauche die "Botschaft" Inhalt werden auf nur einer Linie.
Mein input sieht so aus:
TimeCreated : 08/04/2014 22:31:15
LevelDisplayName : Information
Id : 50065
Message : DHCP a trouvé dans le cache une corespondance pour l’identificateur
(Service Set Identifier) Livebox-816F (valeur hexadécimale de
l’identificateur SSID : C496674) pour la carte réseau dont l’adresse
réseau est 0x0C
Ich kam mit dieser Zeile code, aber es funktioniert nicht:
$MyObject = Get-WinEvent -LogName 'Microsoft-Windows-Dhcp-Client/Admin' | Where-Object {$_.TimeCreated -ge $lastsevendays} | Select 'TimeCreated', 'LevelDisplayName', 'ID', @{n='Message';e={$_.Message -replace '`r', " "}}, $Size
$MyObject > $SourceFile
Vielen Dank!
Versuchen Sie es mit
Es beruhigt nicht funktioniert...
Was passiert, wenn Sie versuchen? Es scheint zu funktionieren für mich, wenn ich entfernt
OP ist nicht (nur) der Versuch, entfernen Sie die Zeilenumbrüche aus
Ich denke, für Spaß, den Sie exportieren könnte die Ausgabe auch in eine text-Datei, Lesen Sie die text-Datei als Binärdaten zu konvertieren, dass zu hex und entfernen Sie alle hexadezimal-Instanzen
'backtick n'
statt 'backtick r'
in Ihrem -replace
.Es beruhigt nicht funktioniert...
Was passiert, wenn Sie versuchen? Es scheint zu funktionieren für mich, wenn ich entfernt
$Size
aus dem Ende des Befehls, da es nicht definiert.OP ist nicht (nur) der Versuch, entfernen Sie die Zeilenumbrüche aus
Message
versuchen Sie, entfernen Sie die Zeilenumbrüche aus der powershell-list-formatierte Ausgabe des resultierenden Objekts. Dies ist schwieriger, so müssen Sie entweder melden Sie sich mit standard-Formatierung dann schreiben Sie das Protokoll, oder verwenden Sie die benutzerdefinierte Ausgabe-Formatierung.Ich denke, für Spaß, den Sie exportieren könnte die Ausgabe auch in eine text-Datei, Lesen Sie die text-Datei als Binärdaten zu konvertieren, dass zu hex und entfernen Sie alle hexadezimal-Instanzen
0D 0A
(das ist das carriage return/line feed in hex).InformationsquelleAutor user3474661 | 2014-04-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diese (gefaltet unter den Rohren, die zur besseren Lesbarkeit):
Escape-Zeichen in der Powershell parser ist der "backtick", aber diese Regeln gelten nicht innerhalb der regex argument für -Ersetzen. Dort muss man regex Parsen Regeln, und ein carriage return '\r'
Hinweis: wenn Sie möchten, dass es als eine einzige Linie, wirst du auch austauschen müssen, um den Zeilenumbruch, so dass Ihr ersetzen wäre '\r\n',"
InformationsquelleAutor mjolinor
Arg, SO dass eine Zeitüberschreitung auf mich und tötete meine Antwort. Hier, dieser arbeitete für mich. Ich speicherte Sie Ihren text in eine Datei C:\Temp\Test.txt. Dann lief ich dieses Skript für Sie:
Lässt mich mit $Event ist ein Objekt, hat 4 Eigenschaften:
Wobei $Event.Nachricht ist eine einzelne Zeichenfolge, wie Sie gewünscht wird, in Ihrer Anfrage.
Edit: zu Sehen, dass Sie sind die Ausgabe-Ereignisse, wie es aussieht, sind Sie mit Geschenkpapier Probleme wegen der Breite-Einschränkungen. Statt
$MyObject > $SourceFile
hierzu:Wird der Ausgang wie das, was Sie hatte, außer es wird jedes Element auf einer eigenen Zeile, und formatieren Sie die Breite auf die Länge der Message-Eigenschaft + 20 Zeichen für den
Message :
vor.InformationsquelleAutor TheMadTechnician
Update:
Es ist nicht klar, ob oder ob nicht der OP entfernen will, nur CRs oder CRLFs. Für die Nachricht "der Inhalt werden auf nur einer Linie" zu löschen, müssen Sie beide CRs und LFs.
@latkin macht einen guten Punkt erwähnt, dass das OP sein könnte, besorgt nicht nur die Eigenschaft Werte, sondern die PowerShell formatiert ausgegeben.
Entfernen Sie beide CRs und LFs von der tatsächlichen Eigenschaftswerte:
Update 2:
fl (Format-List), allerdings wickeln die Ausgabe basiert auf der Konsole Breite. Um das zu verhindern, Rohr-Out-Zeichenfolge mit der max Breite (entfernen Sie dann nur das CRs, wenn das ist Ihre Absicht):
Mit dieser Mehrzweck-filter:
Beispiel 1:
Beispiel 2:
InformationsquelleAutor skataben
Wahrscheinlich eine dumme Geselle Antwort, aber ich hatte ein ähnliches problem und so etwas wie das funktionierte:
Verpasst haben, die zeigen, entschuldigt, wenn ich habe. Werke für mich zu nehmen, ein großer Apparat von HTML und screen scraping.
Verdammt, ich hasse es, wenn es gibt einige Regel, die ich übersprungen. Was habe ich falsch gemacht... gibt es da einen link irgendwo? Ich habe nur versucht zu helfen. <wince> 🙂
Es ist nicht ein StackOverflow, was so viel wie PowerShell best practices. Die größte Sache, die nicht mit Hilfe von Aliasen bei der Freigabe von code, sowohl für die Lesbarkeit und Portabilität.
Sonufagun. Interessant, es scheint, dass jeder Get-Content Beispiel ich sehe nutzt "gc." Ich sehe nicht, einen alias zu erzeugen, die für mich und mit diesem, aber ich dachte, dass jeder nur nutzt gcm, gc, gm, ipmo und dergleichen, innerhalb von etwa fünf Minuten lernen Sie das cmdlet. Aber ich definitiv sehen, warum es könnte überlegen sein, als Lehr-Werkzeug. Danke!
InformationsquelleAutor Mark Minasi