嗨,我正在尝试在Powershell中将文本文件导出为csv格式,但遇到一些对齐问题。数据无法正确显示。
输入文字
clexec.py "top -d1|grep Swap"
NVA-0055-Prod-N08:Swap: 48G Total, 1428K Used, 48G Free
NVA-0055-Prod-N01:Swap: 48G Total, 332K Used, 48G Free
NVA-0055-Prod-N04:Swap: 48G Total, 169M Used, 48G Free
NVA-0055-Prod-N05:Swap: 48G Total, 884K Used, 48G Free
NVA-0055-Prod-N02:Swap: 48G Total, 4236K Used, 48G Free
NVA-0055-Prod-N06:Swap: 48G Total, 132K Used, 48G Free
NVA-0055-Prod-N07:Swap: 48G Total, 92K Used, 48G Free
NVA-0055-Prod-N03:Swap: 48G Total, 712K Used, 48G Free
我正在使用以下命令
$a= import-csv 'C:\Users\PDC_AVERE_SWAP_OP.txt' -Delimiter 't' -Header 'Name','Total','used','free'
$a | export-csv csvfile.csv -NoTypeInformation
我的输出如下所示
校正定界符部分后,我将所有数据收集到一列中,但是我需要将其拆分为Total,二手和免费列
答案 0 :(得分:3)
问题是-Delimiter 't'
。字面意思是字母t
是分隔符。您最有可能是指制表符,在Powershell中是反引号-t:`t
。
答案 1 :(得分:1)
使用“`t”代替“ t”作为Delimeter,并使用导出CSV ,您可以使用以下代码,
"Name,Total,used,free" | Set-Content csvfile.csv
$a | %{ Write-Output "$($_.Name),$($_.Total),$($_.free),$($_.free)" | out-file csvfile.csv -Encoding ascii -Append -Force }
答案 2 :(得分:1)
如果要从文件中删除第一行,
您可以将内容阅读为文本,并跳过// Initialize OLE libraries
if (!AfxOleInit())
{
AfxMessageBox("Could not open the file! \nTry open CS Setup first and then open the file using the menu \"File->Open...\".", MB_ICONERROR);
return FALSE;
}
ConvertFrom-Csv
只要没有标签,但上面的示例有空格,您就可以使用
Get-Content 'C:\Users\PDC_AVERE_SWAP_OP.txt' | Select-Object -Skip 1|
ConvertFrom-Csv -Delimiter "`t" -Header Name,Total,used,free |
Export-Csv csvfile.csv -NoTypeInformation
从而从每个值上剥离标签:
$Data = Get-Content '.\PDC_AVERE_SWAP_OP.txt' |Select-Object -skip 1| ForEach-Object{
$Name,$Total,$used,$free = ($_ -split('\s+'))[0,1,3,5]
[PSCustomObject]@{
Name = $Name
Total= $Total
used = $used
free = $free
}
}
$Data
$Data | Export-Csv '.\PDC_AVERE_SWAP_OP.csv' -NoTypeInformation
$Data | Export-Excel '.\PDC_AVERE_SWAP_OP.xlsx' -AutoSize -Show
使用Export-Excel时,您将直接获得一个xlsx文件
编辑:如此处评论所述,是使用RegEx分隔元素的变体 看到缺少使用值的RegEx实时https://regex101.com/r/GFXpXw/1
Name Total used free
---- ----- ---- ----
NVA-0055-Prod-N08:Swap: 48G 1428K 48G
NVA-0055-Prod-N01:Swap: 48G 332K 48G
NVA-0055-Prod-N04:Swap: 48G 169M 48G
NVA-0055-Prod-N05:Swap: 48G 884K 48G
NVA-0055-Prod-N02:Swap: 48G 4236K 48G
NVA-0055-Prod-N06:Swap: 48G 132K 48G
NVA-0055-Prod-N07:Swap: 48G 92K 48G
NVA-0055-Prod-N03:Swap: 48G 712K 48G