PowerShell - ForEach-Objectの多重使用 - CSVファイルを読み取りデータに1を加算して出力する
Get-Content ".\test.csv" | %{ ( # 1行ごとの処理 $_ -split "," | %{ # 1データごとの処理 [int]$_ + 1 } ) -join "," } | Write-Output
test.csv
1,2,3 4,5,6 7,8,9
結果
2,3,4 5,6,7 8,9,10
普通のプログラムっぽい書き方(ForEach-Objectは使用しない)
$lines = Get-Content ".\test.csv" foreach ($line in $lines) { $data = $line -split "," $ary = @() foreach ($datum in $data) { $ary += [int]$datum + 1 } Write-Host ($ary -join ",") }
CSVにヘッダがある場合
$isHeader = $true Get-Content ".\test.csv" | %{ if($isHeader){ $isHeader = $false $_ } else { ( $_ -split "," | %{ [int]$_ + 1} ) -join "," } }
PowerShell - Sort-Object - 1から10の数字を、2.1に近い順に並べかえる
1..10 | Sort-Object @{ Expression={[MATH]::Abs($_ - 2.1)}; Ascending = $true # expressionブロックの値が小さい順 }
実行結果
2 3 1 4 5 6 7 8 9 10