我正在将一些csv数据转换为一种文件格式,该格式要求某行中某些位置的值。我以为我会使用format-table来设置列宽。但是,这会在列之间添加不必要的额外空间。有没有办法删除空间或有其他格式选项,我可以使用?
$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'
答案 0 :(得分:4)
没有办法摆脱Format-Table AFAIK的额外空间输出。尝试输出为字符串,例如:
... | Foreach { '{0,-30}{1,-30}{2,-8}' -f $_.lname, $_.fname, $_.dob }
请注意,这是一个.NET格式化字符串,所有正常的.NET formatting directives都适用。