使用Powershell处理文本文件(读/写)

时间:2016-11-03 17:07:49

标签: powershell

我有一个包含n条记录的文本文件,每条记录包含两个由制表符分隔的列。我正在阅读此文本文件并使用Powershell脚本在第二列上执行一些映射。我能够执行读取文本文件并能够执行映射。但是当我使用set-content命令编写结果时,我得到的结果低于结果。

输入文件:

4803 6000000

4802 6000000

4803 6000000

4803 5000000

输出文件:

@ {column1的= 4803;列2 = 5000000;}

@ {column1的= 4802;列2 = 6000000;}

@ {column1的= 4803;列2 = 5000000;}

@ {column1的= 4803;列2 = 5000000;}

我不确定为什么我会在每条记录中获得列名。我不想看到这样的结果@ {Column1 = 4803; Column2 = 5000000;}。但它应该是这样的 - 4803 5000000.请你帮我删除输出文件中的特殊字符和列名。

预期结果:

4803 5000000

4802 6000000

4803 5000000

4803 5000000

脚本:

$fields = Get-Content Temp.txt
$results = @()
foreach($i in $fields)
{
    $field  = $i -split '\t' -replace '^\s*|\s*$'
    $field1 = $field[0]
    $field2 = $field[1]
    if ($field1 -eq "4803" -and $field[2].substring(0,2) -eq "60")
        {
            $field2 = "5000000"
        }
    else
        {
            $field2 = $field[1]
        }
            $details = @{       
                    Column1     = $field1
                    Column2     = $field2
                }
        $results += New-Object PSObject -Property $details 
    }
   $results | Select-Object Column1, Column2 | Set-Content -path Temp.txt    [Environment]::Exit(0)

1 个答案:

答案 0 :(得分:0)

尝试更改最后一行代码以使用Format-Table

$results | Format-Table -HideTableHeaders | Set-Content -path Temp.txt    [Environment]::Exit(0)

这应该像您期望的那样打印数据。

编辑:不同的尝试:

$results | ForEach-Object { '{0} {1}' -f $_.Column1,$_.Column2 } | Set-Content -path Temp.txt    [Environment]::Exit(0)