用于转换单列CSV文件的PowerShell脚本

时间:2011-03-30 22:00:29

标签: powershell csv

我正在寻找一个脚本,不一定要在PS中但必须在Windows下运行,它可以转换如下所示的单列文本文件

abc
def
ghi

'abc',
'def',
'ghi'

我目前正在使用= concatenate在Excel中进行此更改,但脚本会更好。

3 个答案:

答案 0 :(得分:5)

使用可以使用正则表达式在开头和结尾插入字符。

get-content ./myonlinecolumn.txt | foreach {$_ -replace "^","'" -replace "`$","',"} 

或者您可以使用格式运算符-f:

get-content ./myonlinecolumn.txt  | foreach {"'{0}'," -f $_ }

删除最后一个尾随逗号的工作要多一些,但这也是可能的

$a = get-content ./myonlinecolumn.txt
get-content ./myonlinecolumn.txt | foreach { if ($_.readcount -lt $a.count) {"'{0}'," -f $_ } else {"'{0}'" -f $_ }}

答案 1 :(得分:3)

我的第一个想法与Chad已经编写的内容相似,即检查行号。所以我尝试了不同的解决方案。不是很好,但我也发布了它:)

((gc c:\before.txt | % {"'"+$_+"'"} ) -join ",*").split("*") | out-file c:\after.txt

答案 2 :(得分:0)

你可以使用

(gc myfile | %{"'$_'"}) -join ',
'

或者,如果你喜欢逃避:

(gc myfile | %{"'$_'"}) -join ",`n"

这会将文件加载到字符串数组(Get-Content)中,然后通过将每个字符串放入单引号来处理它们。 (如果你还需要修剪空格,请使用`'''$($ _。修剪())'“。然后用逗号和换行符连接这些行(这些行可以直接嵌入到字符串中)。

如果您的值可以包含单引号(需要转义),那么将其粘贴在那里也是微不足道的:

(gc myfile | %{"'$($_.Trim() -replace "'","''")'"}) -join ",`n"