我如何用powershell将这个文本文件输出为表格格式?

问题描述 投票:0回答:2

这是我的.txt文件。

    CH: "[email protected]", "[email protected]" 
    DL: "[email protected]", "[email protected]" 
    KM: "[email protected]", "[email protected]" 
    CE: "[email protected]", "[email protected]" 
    DE: "[email protected]", "[email protected]" 
    KL: "[email protected]", "[email protected]" 
    PR: "[email protected]", "[email protected]" 
    EC: "[email protected]" 

我希望输出的结果是这样的。

     Building | Email
     CH:       [email protected]

我对powershell很陌生,请帮助我

powershell
2个回答
0
投票

这个问题很容易解决。

那么,让我们假设输入的是一个名为 "Buildings.txt "的文本文件。 我们可以像这样把它加载到内存中。

$textFile = Get-Content .\Buildings.txt

接下来,我们可以把这个文件分成几行,通过调用 .Split() 方法,并给它newline的重载,看起来像这样。

$Lines = $textFile.Split("`n")
$lines.Count
>8

然后我们就可以简单地步入每一行,然后用冒号分割这些行。: 最后,建立一个对象发送到屏幕上,或者放到一个文件中,或者什么的。

ForEach($l in $Lines){
    $building = $l.Split(":")[0].Trim()
    $email    = $l.Split(":")[1].Trim()
    [pscustomObject]@{
        Building = $building;
        Email = $email
    }
}

运行该程序后,我们会得到这样的结果,它是进一步自动化的有用格式。

Building Email                            
-------- -----                            
CH       "[email protected]", "[email protected]"     
DL       "[email protected]", "[email protected]"    
KM       "[email protected]", "[email protected]"     
CE       "[email protected]", "[email protected]"   
DE       "[email protected]", "[email protected]"   
KL       "[email protected]", "[email protected]"
PR       "[email protected]", "[email protected]"   
EC       "[email protected]"                  

这应该能让你朝着正确的方向前进. 如果没有,请留言:)


0
投票

我不太清楚你想要的是什么。

如果这是你的数据,它已经是一个表了,这是一个格式化的工作。

'
CH: "[email protected]", "[email protected]" 
DL: "[email protected]", "[email protected]" 
KM: "[email protected]", "[email protected]" 
CE: "[email protected]", "[email protected]" 
DE: "[email protected]", "[email protected]" 
KL: "[email protected]", "[email protected]" 
PR: "[email protected]", "[email protected]" 
EC: "[email protected]"
' | 
Out-File -FilePath 'D:\Temp\EmailData.txt'

Get-Content -Path 'D:\Temp\EmailData.txt'
<#
# Results

CH: "[email protected]", "[email protected]" 
DL: "[email protected]", "[email protected]" 
KM: "[email protected]", "[email protected]" 
CE: "[email protected]", "[email protected]" 
DE: "[email protected]", "[email protected]" 
KL: "[email protected]", "[email protected]" 
PR: "[email protected]", "[email protected]" 
EC: "[email protected]
#>

你可以直接把它读成一个表格....

Import-Csv -Path 'D:\Temp\EmailData.txt' -Delimiter ':' -Header Building, Email 
<#
# Results

Building Email                           
-------- -----                           
CH       [email protected], "[email protected]"      
DL       [email protected], "[email protected]"     
KM       [email protected], "[email protected]"      
CE       [email protected], "[email protected]"    
DE       [email protected], "[email protected]"    
KL       [email protected], "[email protected]" 
PR       [email protected], "[email protected]"    
EC       [email protected]  
#>

.再输出回来就可以了。然而,这样做就有点多此一举了

Import-Csv -Path 'D:\Temp\EmailData.txt' -Delimiter ':' -Header Building, Email | 
Export-Csv -Path 'D:\Temp\EmailData.csv' -NoTypeInformation

查看原始数据

Get-Content -Path 'D:\Temp\EmailData.csv'
<#
# Results

"Building","Email"
"CH","[email protected], ""[email protected]"" "
"DL","[email protected], ""[email protected]"" "
"KM","[email protected], ""[email protected]"" "
"CE","[email protected], ""[email protected]"" "
"DE","[email protected], ""[email protected]"" "
"KL","[email protected], ""[email protected]"" "
"PR","[email protected], ""[email protected]"" "
"EC","[email protected]" 
#>

查看表格视图

Import-Csv -Path 'D:\Temp\EmailData.csv'
<#
# Results

Building Email                           
-------- -----                           
CH       [email protected], "[email protected]"      
DL       [email protected], "[email protected]"     
KM       [email protected], "[email protected]"      
CE       [email protected], "[email protected]"    
DE       [email protected], "[email protected]"    
KL       [email protected], "[email protected]" 
PR       [email protected], "[email protected]"    
EC       [email protected]
#>

如果你是说,你想把上面的样子放在一个文件里,比如说以后打印,你就可以这样输出。

Import-Csv -Path 'D:\Temp\EmailData.csv' | 
Out-File -FilePath 'D:\Temp\EmailData.dat'

Get-Content -Path 'D:\Temp\EmailData.dat'
<#
# Results

Building Email                           
-------- -----                           
CH       [email protected], "[email protected]"      
DL       [email protected], "[email protected]"     
KM       [email protected], "[email protected]"      
CE       [email protected], "[email protected]"    
DE       [email protected], "[email protected]"    
KL       [email protected], "[email protected]" 
PR       [email protected], "[email protected]"    
EC       [email protected]
#>

文件的扩展名其实并不重要。我这么做只是为了表明我的工作方式,都是一样的东西。

© www.soinside.com 2019 - 2024. All rights reserved.