• 締切済み

powershellでのソート

powershellでのソート処理に関して教えてください。 list.csv F1,F2,F3 file01.txt,c:\dirA,100kb file20.txt,c:\dirC,100kb file100.txt,c:\dirG,100kb file200.txt,c:\dirG,100kb CSVで上記の様なデータがあり、F1のデータにおいて、 ファイル名の数字部分でソートしたいのですが、 意図したソートができません。 数字を考慮してのソートってどうやればよいでしょうか。 PS c:\>Get-Content .\list.csv|ConvertFrom-CSV |Sort-Object f1 F1 F2 F3 -- -- -- file01.txt c:\dirA 100kb file100.txt c:\dirG 100kb file20.txt c:\dirC 100kb file200.txt c:\dirG 100kb file01.txt→file02.txt→file100.txt→file200.txtの並びでソートさせたいです。 よろしくお願いします。

みんなの回答

  • queuerev2
  • ベストアンサー率78% (96/122)
回答No.1

いろいろ調べてやってみましたがすごく長くなってしまいました。 私もPowerShellを使い始めてまだ1カ月もたっていないのでこれがまともな方法かどうかわかりませんが、結果は大丈夫なようです。 (なお、CSVのフィールド名F1の1は全角だったのでそのままにしてあります) Get-Content .\list.csv|ConvertFrom-CSV |foreach-object -process {add-member -inputobject $_ -membertype noteproperty -name f4 ([int]($_.F1 -replace ".*?(\d+)\.txt",'$1')) -passthru}|sort-object f4|select-object f1,f2,f3

kyolly
質問者

お礼

queuerev2さん ありがとうございます。 ちょっと返信遅くなりました。 上記の方法試してみます。

関連するQ&A