繁体   English   中英

如何使用 powershell 将此文本文件 output 转换为表格格式?

[英]How do I output this Text file into a table format using powershell?

这是 my.txt 文件:

    CH: "g@email.org", "j@email.org" 
    DL: "y@email.org", "ri@email.org" 
    KM: "b@email.org", "n@email.org" 
    CE: "tap@email.org", "k@email.org" 
    DE: "pi@email.org", "sp@email.org" 
    KL: "reedc@email.org", "be@email.org" 
    PR: "ks@email.org", "bt@email.org" 
    EC: "brn@email.org" 

我希望 output 看起来像这样:

     Building | Email
     CH:       g@email.com

我对 powershell 很陌生,请帮忙

这很容易解决。

所以,让我们假设输入在一个名为“Buildings.txt”的文本文件中。 我们可以像这样将它加载到 memory 中:

$textFile = Get-Content .\Buildings.txt

接下来,我们可以通过调用.Split()方法并为其赋予换行符的重载,将这个文件分成几行,如下所示:

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

然后我们可以简单地遍历每一行,然后在冒号字符上拆分它们, :最后,构建一个 object 发送到屏幕或放入文件或你有什么。

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

运行它给了我们这个,这是进一步自动化的有用格式:

Building Email                            
-------- -----                            
CH       "g@email.org", "j@email.org"     
DL       "y@email.org", "ri@email.org"    
KM       "b@email.org", "n@email.org"     
CE       "tap@email.org", "k@email.org"   
DE       "pi@email.org", "sp@email.org"   
KL       "reedc@email.org", "be@email.org"
PR       "ks@email.org", "bt@email.org"   
EC       "brn@email.org"                  

这应该让你朝着正确的方向前进。 如果没有,请发表评论:)

我不太清楚你在追求什么。

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

'
CH: "g@email.org", "j@email.org" 
DL: "y@email.org", "ri@email.org" 
KM: "b@email.org", "n@email.org" 
CE: "tap@email.org", "k@email.org" 
DE: "pi@email.org", "sp@email.org" 
KL: "reedc@email.org", "be@email.org" 
PR: "ks@email.org", "bt@email.org" 
EC: "brn@email.org"
' | 
Out-File -FilePath 'D:\Temp\EmailData.txt'

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

CH: "g@email.org", "j@email.org" 
DL: "y@email.org", "ri@email.org" 
KM: "b@email.org", "n@email.org" 
CE: "tap@email.org", "k@email.org" 
DE: "pi@email.org", "sp@email.org" 
KL: "reedc@email.org", "be@email.org" 
PR: "ks@email.org", "bt@email.org" 
EC: "brn@email.org
#>

您可以将其作为表格读回...

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

Building Email                           
-------- -----                           
CH       g@email.org, "j@email.org"      
DL       y@email.org, "ri@email.org"     
KM       b@email.org, "n@email.org"      
CE       tap@email.org, "k@email.org"    
DE       pi@email.org, "sp@email.org"    
KL       reedc@email.org, "be@email.org" 
PR       ks@email.org, "bt@email.org"    
EC       brn@email.org  
#>

...和 output 退出。 然而,这有点多余

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","g@email.org, ""j@email.org"" "
"DL","y@email.org, ""ri@email.org"" "
"KM","b@email.org, ""n@email.org"" "
"CE","tap@email.org, ""k@email.org"" "
"DE","pi@email.org, ""sp@email.org"" "
"KL","reedc@email.org, ""be@email.org"" "
"PR","ks@email.org, ""bt@email.org"" "
"EC","brn@email.org" 
#>

查看表格视图

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

Building Email                           
-------- -----                           
CH       g@email.org, "j@email.org"      
DL       y@email.org, "ri@email.org"     
KM       b@email.org, "n@email.org"      
CE       tap@email.org, "k@email.org"    
DE       pi@email.org, "sp@email.org"    
KL       reedc@email.org, "be@email.org" 
PR       ks@email.org, "bt@email.org"    
EC       brn@email.org
#>

如果你说,你想在一个文件中查看上面的内容,以便稍后打印,你可以这样 output 。

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       g@email.org, "j@email.org"      
DL       y@email.org, "ri@email.org"     
KM       b@email.org, "n@email.org"      
CE       tap@email.org, "k@email.org"    
DE       pi@email.org, "sp@email.org"    
KL       reedc@email.org, "be@email.org" 
PR       ks@email.org, "bt@email.org"    
EC       brn@email.org
#>

文件扩展名真的不重要。 我这样做只是为了表明我正在以同样的方式处理所有相同的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM