Powershell,从txt文件和格式数据中读取(删除行,删除其间的空格)

时间:2010-06-23 18:11:48

标签: powershell

我对powershell真的很新。我想使用powershell读取txt文件并将其更改为其他格式。

  1. 从txt文件中读取。
  2. 格式化数据(删除行,删除其间的空格)
  3. 记录数(“T 000000002”9个字符)
  4. 然后将输出写入新文件。

    两天前我刚开始使用PowerShell,所以我还不知道该怎么做。

3 个答案:

答案 0 :(得分:8)

  1. 从文件中读取:

    Get-Content file.txt
    
  2. 不太确定你想要什么。 Get-Content返回一个字符串数组。然后,您可以操纵所获得的内容并将其传递给它。这里最有用的cmdlet可能是Where-Object(用于过滤)和ForEach-Object(用于操作)。

    例如,要删除所有空白行

    Get-Content file.txt | Where-Object { $_ -ne '' } > file2.txt
    

    这可以缩短为

    Get-Content file.txt | Where-Object { $_ } > file2.txt
    

    因为布尔上下文中的空字符串的计算结果为false

    或者删除每一行中的空格:

    Get-Content file.txt | ForEach-Object-Object { $_ -replace ' ' } > file2.txt
    
  3. 再一次,不太清楚你在这之后会发生什么。

    中我可以从你过于精细的描述中想到的可能事情
    $_.Substring(2).Length
    

    $_ -match '(\d+)' | Out-Null
    $Matches[1].Length
    

答案 1 :(得分:1)

function Count-Object() {
    begin {
        $count = 0
    }
    process {
        $count += 1
    }
    end {
        $count
    }
}

$a= get-content .\members.txt |  
Foreach-Object { ($_  -replace '\s','') } |
Foreach-Object { ($_ -replace '-','') } |
Foreach-Object { ($_ -replace 'OP_ID','') } | 
Foreach-Object { ($_ -replace 'EFF_DT','') } |
Where-Object { $_ -ne '' }|
set-content  .\newmembers.txt

 $b = Get-Content  .\newmembers.txt |
Count-Object $b 
 "T {0:D9}" -f $b | add-content  .\newmembers.txt

答案 2 :(得分:1)

我也喜欢?用来代替where-object来修剪它。

Get-Content file.txt | ?{ $_ } > file2.txt