2010-07-06 76 views
1

我正在将一些csv数据转换为文件格式,该文件格式期望值在一行中的某个位置。我想我会使用格式表来完成这个设置列的宽度。但是,这会在列之间增加一个不需要的额外空间。有没有办法删除空间或有其他格式选项,我可以使用?如何删除Powershell中的列之间的额外空间格式 - 表

$format = 
@{E={$_.lname}; width=30}, 
@{E={$_.fname}; width=30}, 
@{E={$_.dob}; width=8}, 
@{E={if($_.sex -eq 'F') { 'V' } elseif($_.sex -ne 'M') { 'O' } else { $_.sex} }; width=1}, 

... 

@{E={if($_.mstatus -eq 'M') {'Y'} else {'N'}}; width=1;}, 
@{E={$_.social}; width=50}; 

import-csv -Delimiter '|' .\data.txt | ft $format -hidetableheaders | out-file -width 2500 'c:\temp\temp.txt' 

回答

4

没有办法摆脱Format-Table AFAIK输出的额外空间。尝试输出作为一个字符串例如: -

... | Foreach { '{0,-30}{1,-30}{2,-8}' -f $_.lname, $_.fname, $_.dob } 

注意,这是一个.NET格式化字符串和所有正常.NET formatting directives适用。

相关问题