如何在Powershell中添加引号和逗号

时间:2019-02-12 23:18:25

标签: powershell csv powershell-v2.0 powershell-v3.0 comma

我有一个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”

1 个答案:

答案 0 :(得分:2)

尝试以下(PSv3 +):

(Import-Csv .\log.csv).SerialNumber -replace '^.*$', '"$&"' -join "," > .\file2.txt
  • (Import-Csv .\log.csv).SerialNumber导入CSV文件,.SerialNumber使用member enumeration提取SerialNumber列值作为数组。

  • -replace '^.*$', '"$&"'"..."中的每个数组元素括起来。

    • Regex ^.*$完全匹配每个数组元素。
    • 替换表达式"$&"将元素替换为$&字符中匹配的元素(")。 -有关背景,请参见this answer
  • -join ","使用,作为分隔符将结果数组元素连接起来。