我正在寻找一个脚本,不一定要在PS中但必须在Windows下运行,它可以转换如下所示的单列文本文件
abc
def
ghi
到
'abc',
'def',
'ghi'
我目前正在使用= concatenate在Excel中进行此更改,但脚本会更好。
答案 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"