我有一个CSV文件,我只需要1列称为“ SerialNumber”,就需要合并文本行,删除任何空格,在引号中添加每行并以逗号分隔。
到目前为止,我有很多可使用的代码,但是它在末尾添加了引号,而在开始时没有添加引号。
$SerialList = import-csv .\log.csv | select -ExpandProperty Serialnumber | Out-File -FilePath .\Process.txt
(gc process.txt) | ? {$_.trim() -ne "" } | set-content process.txt
gc .\process.txt | %{$_ -replace '$','","'} | out-file process1.csv
Get-Content .\process1.csv| foreach {
$out = $out + $_
}
$out| Out-File .\file2.txt
输出:
序列号
1234
1234
4567
4567
预期输出:
“ 1234”,“ 1234”,“ 4567”,“ 4567”
答案 0 :(得分:2)
尝试以下(PSv3 +):
(Import-Csv .\log.csv).SerialNumber -replace '^.*$', '"$&"' -join "," > .\file2.txt
(Import-Csv .\log.csv).SerialNumber
导入CSV文件,.SerialNumber
使用member enumeration提取SerialNumber
列值作为数组。
-replace '^.*$', '"$&"'
将"..."
中的每个数组元素括起来。
^.*$
完全匹配每个数组元素。"$&"
将元素替换为$&
字符中匹配的元素("
)。 -有关背景,请参见this answer -join ","
使用,
作为分隔符将结果数组元素连接起来。