Textdatei nach Klammer Grösse sortieren?
Moin!
Ich habe eine Textdatei, die in jeder Zeile, zahlen Werte in klammern hat.
Zb.
[183848][0101][0202][01067373][0707060]
Ich würde die klammern gerne nach Grösse sortieren,
Daraus wird dann:
[0101][01067373][0202][0707060][183848]
Kann mir da jemand helfen? Geht sowas vielleicht in powershell? Ich kenne mich leider nur garnicht damit aus!
Lg!
Wie genau meinst du nach Größe sortieren?
[01067373] ist größer als [0202], geht es dir darum, dass die zweite Ziffer bei 0202 größer ist?
Die 4 zahlen gelten als eine zahl. Also null hundertsechs, ist kleiner als nullzweihundertzwei und deswegen weiter vorne.
1 Antwort
trivial:
test.txt
[183848][0101][0202][01067373][0707060]
[0815][4712][03061][0202][01111111]
[258914][15894][15687][02222][145924]
demo.ps1
Get-Content 'test.txt'|
ForEach-Object{
$Parts = $_|
Select-String -Pattern '\[\d+\]' -AllMatches # finde alle Teile der Zeile, welche folgendermaßen aussehen: "[Ziffern]"
$Parts = $Parts.Matches.Value|
Sort-Object #einfaches String sortieren
$Parts -join '' #Teile wieder zusammenfogen
}|
Set-Content 'test.neu.txt' #schreibe das Ergebnis wieder in eine Datei
das war die ausführliche Variante zum besseren Verständnis. Das geht natürlich auch wesentlich sparsamer:
gc 'test.txt'|%{(($_|select-string '\[\d+\]' -a).matches.value|sort) -join ''}|sc 'test.neu.txt'
das Ergebnis:
[0101][01067373][0202][0707060][183848]
[01111111][0202][03061][0815][4712]
[02222][145924][15687][15894][258914]
Glossar
- https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/select-string?view=powershell-5.1
- https://adamtheautomator.com/powershell-regex/
- https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/get-content?view=powershell-5.1
- https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.management/set-content?view=powershell-5.1
- https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/sort-object?view=powershell-5.1
- https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/foreach-object?view=powershell-5.1
So eine Antwort wünscht man sich!! Vielen vielen dank dafür!! Besser gehr es wohl nicht!!