Hier ist eine letzte Powershell-Lösung, die sich mit neuen Linien befassen wird. Als Trennzeichen wird ein Hashtag gefolgt von Wortzeichen gefolgt von angenommen. Bei einer Datenzeile ohne Hash-Tag wird davon ausgegangen, dass die Daten bis zur nächsten Zeile fortgesetzt werden. Die anderen Informationen unterhalb dieses Abschnitts meiner Antwort beziehen sich nicht auf den vom Autor genannten Sonderfall, bei dem Daten eine neue Grenze überschreiten. In diesem Beispiel wird davon ausgegangen, dass die Datei test.txt heißt und sich im aktuellen Verzeichnis befindet.
[string[]]$fileContent = (get-content .\test.txt); [string]$linebuffer = ''; [object]$fixedFile = foreach($line in $fileContent) { if(-not ($line -match "#\w+$")) { $linebuffer += ($line + ' '); continue; } $linebuffer += $line; $linebuffer; $linebuffer = ''; } ($fixedFile -replace '^(.*)\ (#.*)$', '$2 $1' | Sort-Object) -replace '^(#\w+)\ (.*)$','$2 $1' | out-file test.txt -encoding ascii
Verwenden Sie gVim unter Windows oder MacVim unter OS X.
HINWEIS: Vim ist ein Editor mit 2 Modi. Einfüge- / Bearbeitungsmodus und Befehlsmodus. Um Text wie einen normalen Editor zu bearbeiten, müssen Sie sich im Bearbeitungsmodus befinden, der das Drücken einer Taste wie a
oder erfordert i
. Der Editor startet im Befehlsmodus. Im Befehlsmodus können Sie einfach einen Doppelpunkt eingeben, um diese Befehle einzugeben.
:%s/^\(.*\)\ \(\#\w\+\)$/\2\ \1/g :sort :%s/^\(\#\w\+\)\ \(.*\)$/\2\ \1/g
Der erste Befehl tauscht den Hashtag am Zeilenende an den Zeilenanfang. Der zweite Befehl sortiert die Daten und der dritte Befehl macht den Swap rückgängig und verschiebt den Hashtag an das Ende der Zeile.
Ich habe dies an Ihrem Beispiel getestet und es funktioniert.
@Oliver_Salzburg lieferte eine viel einfachere Antwort in Excel. Ich dachte nicht über den Tellerrand und gab eine Antwort mit einem Texteditor.
Schritt 1: Ersetzen
#
mit,#
Schritt 2: Importieren Sie als CSV in Excel oder eine ähnliche Anwendung. - Oliver Salzburg ♦
Hier ist eine Lösung, bei der nur Powershell verwendet wird, die nativ unter Win7 ausgeführt werden kann. Ich hatte immer noch keine Gelegenheit, sich über das Durchqueren von Zeilenumbrüchen zu informieren, daher berücksichtigt diese Lösung diese nicht.
In diesem Beispiel wird davon ausgegangen, dass die Datei, mit der Sie arbeiten, ist test.txt
.
$tempstor = (get-content test.txt) -replace '^(.*)\ (#.*)$', '$2 $1' | Sort-Object $tempstor -replace '^(#\w+)\ (.*)$','$2 $1' | out-file test.txt -encoding ASCII
Eine Zwischenlage mit Hebelschalen.
((get-content test.txt) -replace '^(.*)\ (#\w+)$', '$2 $1' | Sort-Object) -replace '^(#\w+)\ (.*)$','$2 $1' | out-file test.txt -encoding ascii