从管道分隔文件

时间:2017-11-02 15:38:36

标签: powershell csv import-csv

我试图从管道分隔文件中的第15和第16列中删除空格。

我在搜索网页后尝试了这篇文章底部的代码,但它没有用

  

您无法在空值表达式上调用方法。在线:19   焦炭:2   + $ .h15 = $ .h15.ToString()。替换('''')   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       + CategoryInfo:InvalidOperation:(:) [],RuntimeException       + FullyQualifiedErrorId:InvokeMethodOnNull

  

您无法在空值表达式上调用方法。在线:20   焦炭:5   + $ .h16 = $ .h16.ToString()。替换('''')   + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~       + CategoryInfo:InvalidOperation:(:) [],RuntimeException       + FullyQualifiedErrorId:InvokeMethodOnNul

我猜是因为它没有阅读数据,但我不明白为什么不这样做。我检查了变量并且它们是正确的。

$header = 1..42 | ForEach-Object { "h$_" }
$dialler_out_path="$dialler_file_dir\$output_file"

$dialler_path="$dialler_file_dir\$dialler_file"

(Import-Csv -Delimiter '|' -Header $header -Path $dialler_path | %{ 
    $_.h15=$_.h15.ToString().Replace(' ','')
    $_.h16=$_.h16.ToString().Replace(' ','')
}) | export-csv $dialler_out_path -NoType

1 个答案:

答案 0 :(得分:0)

处理null对象的另一种方法(除了注释):

$_.h15 = (-join ($_.h15)).ToString().Replace(' ','')

您应该在foreach中生成输出:

(Import-Csv -Delimiter '|' -Header $header -Path $dialler_path | %{ 
$_.h15 = (-join ($_.h15)).ToString().Replace(' ','')
$_.h16 = (-join ($_.h16)).ToString().Replace(' ','')

$_

}) | export-csv $dialler_out_path -NoType