Power Shell CSV转换

时间:2018-11-15 15:22:36

标签: powershell csv

嗨,我正在尝试在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

我的输出如下所示

enter image description here

校正定界符部分后,我将所有数据收集到一列中,但是我需要将其拆分为Total,二手和免费列

enter image description here

3 个答案:

答案 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文件

enter image description here

编辑:如此处评论所述,是使用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