Textdatei nach Klammer Grösse sortieren?

MeinNameIstLutz  05.02.2023, 14:44

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?

Ranjahh 
Fragesteller
 05.02.2023, 15:44

Die 4 zahlen gelten als eine zahl. Also null hundertsechs, ist kleiner als nullzweihundertzwei und deswegen weiter vorne.

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

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

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

Ranjahh 
Fragesteller
 08.02.2023, 17:43

So eine Antwort wünscht man sich!! Vielen vielen dank dafür!! Besser gehr es wohl nicht!!

0