[英]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.