2014-10-11 112 views
0

id喜欢以特定方式格式化CSV记录的输出。Powershell:以特定方式格式化Import-Csv记录的输出

比方说,我有这些记录的CSV文件:

Field1,Field2 
blah,blah 
bluh,bluh 

现在,我想达到什么是输出(到控制台或文件)用此格式

('blah','blah') 
('bluh','bluh') 

这[1]不起作用! Powershell根本不会将任何内容写入out.txt。

[1]

Import-Csv .\test.csv | Select-Object Field1,Field2 | ForEach-Object {Write-Host "('"$_.Field1"', '"$_.Field2"')"} > .\out.txt 
+1

取代'写Host'如果你打算在文本输出,你应该使用'写Output'。 – Matt 2014-10-11 18:09:33

回答

3

使用格式运算符:

import-csv .\test.csv | %{ "({0},{1})" -f $_.Field1, $_.Field2; } 

要输出到文件,只需在那里输出产量;即

import-csv .\test.csv | %{ "({0},{1})" -f $_.Field1, $_.Field2; } | out-file .\out.txt 

有关格式运算符的详细信息:http://ss64.com/ps/syntax-f-operator.html

+1

这里的关键不是格式运算符,但是他删除了'write-host',因此它将对象(字符串)发送到管道(他也可以使用'Write-Output',它也这样做)。 “写主机”仅用于交互式消息,它们不作为可以传送到另一个命令或写入文件的对象发送。 – 2014-10-11 23:40:04

+1

Thx,正是我需要的! – 2014-10-13 08:20:43

2

试试这个,如果工作

...{Write-output "('$($_.Field1)', '$($_.Field2)')"} > .\out.txt 

不使用写入主机