我的 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
我在此处和此处参考了 stackoverflow 问题,以完成我的大部分工作。但是,我想根据第三列重命名我的文件。由于 Windows 不接受文件名中的“:”,因此我想在将第三列附加到我的文件名之前删除“:”。我希望我的文件名如下所示:
文件名-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
}