前スレ
PowerShell -Part 5
https://mevius.5ch.net/test/read.cgi/tech/1615994992/
次スレは>>980が立ててね!!
探検
PowerShell -Part 6
■ このスレッドは過去ログ倉庫に格納されています
2022/02/13(日) 18:36:12.07ID:LaQ04ZoE
338デフォルトの名無しさん
2022/05/29(日) 15:56:20.58ID:2VGP7oaH bash -c "paste -d , a.csv b.csv"
339デフォルトの名無しさん
2022/05/29(日) 18:24:56.01ID:maoDzYC5 カラムの順序指定もしたいみたいだから、cutとかでもう1処理いるね。
PowerShellだと
(>>338) | ConvertFrom-Csv | select id,name,address,phone,gender | ConvertTo-Csv
ただしConvertFrom-Csv・ConvertTo-Csvは
元データを正確に再現する必要がある場合には難あり。
(Trim()が掛かるとかダブルクォーテーションで括られるとか。)
PowerShellだと
(>>338) | ConvertFrom-Csv | select id,name,address,phone,gender | ConvertTo-Csv
ただしConvertFrom-Csv・ConvertTo-Csvは
元データを正確に再現する必要がある場合には難あり。
(Trim()が掛かるとかダブルクォーテーションで括られるとか。)
340デフォルトの名無しさん
2022/05/29(日) 18:27:45.99ID:maoDzYC5 paste使えない環境とか、Trim()掛かると困るとか、PowerShellだけで実装したい場合
function Merge-Csv {
Param (
[Object[]] $InputObject,
[string[]] $Header,
[char] $Delimiter = ','
)
$tbl = [Data.DataTable]::new()
# 1行目をカラム名として使用
foreach ($csv in $InputObject) {
$tbl.Columns.AddRange(($csv[0].Split($Delimiter)))
}
# 各CSVの同じ行同士をDataRowにする。
for ($lineIdx = 0; $lineIdx -lt $InputObject[0].Length; $lineIdx++) {
$rowData = @(
foreach ($csv in $InputObject) {
$csv[$lineIdx].Split($Delimiter)
}
)
$null= $tbl.Rows.Add($rowData)
}
# カラム順序を指定順序に変更する。
for ($order = 0; $order -lt $Header.Length; $order++) {
$tbl.Columns[$Header[$order]].SetOrdinal($order)
}
# CSV形式で出力
foreach ($row in $tbl.Rows) {
$row.ItemArray -join $Delimiter
}
}
function Merge-Csv {
Param (
[Object[]] $InputObject,
[string[]] $Header,
[char] $Delimiter = ','
)
$tbl = [Data.DataTable]::new()
# 1行目をカラム名として使用
foreach ($csv in $InputObject) {
$tbl.Columns.AddRange(($csv[0].Split($Delimiter)))
}
# 各CSVの同じ行同士をDataRowにする。
for ($lineIdx = 0; $lineIdx -lt $InputObject[0].Length; $lineIdx++) {
$rowData = @(
foreach ($csv in $InputObject) {
$csv[$lineIdx].Split($Delimiter)
}
)
$null= $tbl.Rows.Add($rowData)
}
# カラム順序を指定順序に変更する。
for ($order = 0; $order -lt $Header.Length; $order++) {
$tbl.Columns[$Header[$order]].SetOrdinal($order)
}
# CSV形式で出力
foreach ($row in $tbl.Rows) {
$row.ItemArray -join $Delimiter
}
}
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市総理の周辺「小さな火種が火事になりかけている。早く鎮火しないといけない」 ★5 [Hitzeschleier★]
- 日本の立場説明へ…外務省局長が北京到着 “台湾有事”首相答弁に中国反発 [煮卵★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る [蚤の市★]
- 高市総理の周辺「小さな火種が火事になりかけている。早く鎮火しないといけない」 ★6 [Hitzeschleier★]
- 【外交】日中関係悪化、長期化の様相 2012年には自動車輸出80%減も ロイター★2 [1ゲットロボ★]
- 早大名誉教授が高市早苗首相の発言に言及「台湾も迷惑だと言っている」… [BFU★]
- 【んな専🏡】姫森ルーナ(・o・🍬)総合スレッド🏰【ホロライブ▶】★2
- 【悲報】有名ウヨ論客、「現実的に考えて中国と仲直りするしかなくね?」と言ったら野良ウヨから総叩きにあう [856698234]
- 【高市悲報】経団連会長、高市と面談「おい!ちゃんと中国と対話しろよ!😨」 [359965264]
- 【実況】博衣こよりのえちえち雀魂1位耐久🧪★4
- TV「港区美女スペシャル」👉すべからくカリカリが出てきて界隈に衝撃が走る [329329848]
- 【悲報】よくよく考えたら日本が台湾有事に首を突っ込む理由、何もない [714769305]
