我有一个CSV文件,我只需要一个名为“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"
尝试以下(PSv3 +):
(Import-Csv .\log.csv).SerialNumber -replace '^.*$', '"$&"' -join "," > .\file2.txt
(Import-Csv .\log.csv).SerialNumber
列值提取为数组。.SerialNumber
将每个数组元素包含在member enumeration中。
SerialNumber
-replace '^.*$', '"$&"'
完整匹配每个数组元素。
替换表达式"..."
用Regex字符中包含的匹配(^.*$
)替换元素。 - 有关背景信息,请参阅"$&"
$&
以"
作为分隔符连接生成的数组元素。