1

私のCSVファイルには次のような内容があります:

currentTime, SeqNum, Address
1381868225469, 0, 
1381868226491, 1, 38:1c:4a:0:8d:d 
1381868227493, 1, 
1381868228513, 2, 38:1c:4a:0:8d:d 
1381868312825, 43, 
1381868312916, 1694564736, 3a:1c:4a:1:a1:98 
1381868312920, 1694564736, 3a:1c:4a:1:a1:98 
1381868312921, 44, 

3 列目が空かどうかに応じて、ファイルを 2 つ以上のファイル (3 列目を含む行 (ファイル名には 3 列目が含まれている必要があります) と 3 列目を含まないファイル) に分けたいと思います。

出力例:

**File0.txt**
1381868225469, 0, 
1381868227493, 1, 
1381868312825, 43, 
1381868312921, 44, 

**File1-381c4a08dd.txt**
1381868226491, 1, 38:1c:4a:0:8d:d 
1381868228513, 2, 38:1c:4a:0:8d:d 

**File2-3a1c4a1a198.txt**
1381868312916, 1694564736, 3a:1c:4a:1:a1:98 
1381868312920, 1694564736, 3a:1c:4a:1:a1:98 

ほとんどの作業を完了するために、スタックオーバーフローの質問HEREおよびHEREを参照しました。ただし、3 列目に基づいてファイルの名前を変更したいと考えています。Windowsはファイル名に「:」を受け入れないため、ファイル名に3列目を付ける前に「:」を削除したいと思います。ファイル名を次のようにしたい:

ファイル名-381c4a08dd.txt

どうすればいいですか?これはこれまでの私の試みです:

import-csv File.txt | group-object Address | foreach-object {
$_.group | select-object currentTime, SeqNum, Address | convertto-csv -NoTypeInformation | %{$_ -replace '"', ""} | out-file File-$($_.Address.remove(':')).txt -fo -en ascii
}
4

1 に答える 1