こんなCSVファイルが有ったとして、
PS>Import-Csv test.txt id name |
これをidでソートすると、
PS>import-csv test.txt | sort id id name |
文字列として解釈されているので、ちょっと残念な結果になってしまう。
こういう時は、PowerShell: ◆ソートのカスタマイズで使ったのと同じ方法で集計プロパティを使うと良い。
PS>Import-Csv test.txt | sort @{e={$_.id -as [int]}} id name |
はじめまして、まだ1か月のPowerShell初心者です。
返信削除sort @{e={$_.id -as [int]}}
とされてますが、
sort {[int]$_.id }
と記述しても同じ結果が得られると思うのですが、
それとは違った意図でもあるのでしょうか。
私が的外れなこと言っていたらごめんなさん。
こんにちは、コメントありがとうございます。
返信削除基本的にはご指摘の方法でキャストしても同じ結果になると思います。
PowerShellに限らず、C#やVBでも多分そうだと思うのですが、キャストした場合はキャストできないデータ(ここの場合はintに変換できない文字列など)が出現した場合エラーとなってしまいます。
一方「as演算子」を使った場合は変換できないデータが出現した場合は無視(Nullが返る)してくれます。
今回の場合は単にソートしたいだけですので、エラーにするよりはそのまま処理を続行させたほうがベターかと判断した次第です。
ケースによってはキャストの方が良い場合もあると思います。
>変換できないデータが出現した場合は無視(Nullが返る)してくれます
返信削除ありがとうございます。これは良い情報です。
実は、分析(統計およびマイニング)のツールを作っているところで、
Nullを返してくれるということは、大変助かります。
勉強になりました。良い情報をありがとうございました。