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

问题描述:

我对PowerShell非常陌生。我想使用PowerShell来读取一个txt文件,并将其更改为另一种格式。Powershell,从txt文件中读取数据并格式化(删除行,删除之间的空格)

  1. 从txt文件读取。
  2. 格式数据(删除线,在之间移除空格)
  3. 计数的记录(“T 000000002” 9个字符)

,然后输出写入到一个新文件。

我刚刚开始两天前的PowerShell,所以我不知道如何做到这一点呢。从文件

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 

  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

只需注意:通过'>'重定向以Unicode创建文件。如果您需要指定编码,请使用'... |设置内容文件名-encoding Utf8'。 – stej 2010-06-23 20:17:03

+0

...或者'Out-File',类似地。 @stej:你的“Unicode”意思是“UTF16-LE”在这种情况下:-) – Joey 2010-06-24 07:17:14

+0

大家好,非常有用。但我仍然试图弄清楚如何计算行数。我能够删除空格我的代码到目前为止是 $ s = get-content D:\ MyScripts \ members.txt | Foreach-Object {($ _ -replace' - ','')} | Foreach-Object {($ _ -replace'OP_ID','')} | Foreach-Object {($ _ -replace'EFF_DT','')} | Where-Object {$ _ -ne''} | 删除空间$ s |设置内容D:/ MyScripts/nmembers。txt – user350332 2010-06-29 17:42:19

我也很喜欢线条的东西吗?用来替代那个对象来修剪它。

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