PowerShell:切片和切块制表符分隔文件
PowerShell: slice and dice tab delimited file
我有一个由我的备份软件生成的制表符分隔的文本文件。我希望能够使用 Import-CSV.
将其作为 PowerShell 数组导入
问题是导出文件的前 5 行阻止 PowerShell 将其识别为数组:
#List of Media
#Cell Manager: hpdp.domain.local
#Creation Date: 11/08/2018 9:36:09 AM
# Headers
# Medium ID Label Location Status Protection Used [MB] Total [MB] Last Used Last Used_t Pool Type
我能够 'fix' 的方法是使用记事本删除前四行并从 header 行中删除第一个 #。该文件看起来像这样:
Medium ID Label Location Status Protection Used [MB] Total [MB] Last Used Last Used_t Pool Type
id1:id2:id3:id5 [hostname] labelname_31 [Library: 5] Good 13/08/2018 10:01:41 PM 762699.50 762699.50 14/07/2018 10:00:36 PM 1531828836 Tape Drive Pool LTO-Ultrium
我正在尝试找到一种方法让 PowerShell 进行此更改。例如,我尝试使用以下行删除前四行作为第一步:
(Get-Content $file | Select-Object -Skip 4) | Set-Content $file
文件随后似乎丢失了制表符,因此不再被分隔。
如何在不丢失制表符的情况下删除第一行和第一行#?提前致谢!
这可以通过这样的方式完成
$data = Get-Content $file | Select-Object -Skip 4
$data[0] = $data[0] -replace '^#\s*', ''
现在您可以覆盖该文件:
$data | Set-Content $file -Force
或直接将其用作 Powershell 中的对象(csv 对象是 PSObject 数组)
$csv = ($data -join [environment]::NewLine) | ConvertFrom-Csv -Delimiter "`t"
或者使用这个转换后的对象再次写出文件
$csv | Export-Csv -Path $file -Delimiter "`t" -NoTypeInformation -Force
我有一个由我的备份软件生成的制表符分隔的文本文件。我希望能够使用 Import-CSV.
将其作为 PowerShell 数组导入问题是导出文件的前 5 行阻止 PowerShell 将其识别为数组:
#List of Media
#Cell Manager: hpdp.domain.local
#Creation Date: 11/08/2018 9:36:09 AM
# Headers
# Medium ID Label Location Status Protection Used [MB] Total [MB] Last Used Last Used_t Pool Type
我能够 'fix' 的方法是使用记事本删除前四行并从 header 行中删除第一个 #。该文件看起来像这样:
Medium ID Label Location Status Protection Used [MB] Total [MB] Last Used Last Used_t Pool Type
id1:id2:id3:id5 [hostname] labelname_31 [Library: 5] Good 13/08/2018 10:01:41 PM 762699.50 762699.50 14/07/2018 10:00:36 PM 1531828836 Tape Drive Pool LTO-Ultrium
我正在尝试找到一种方法让 PowerShell 进行此更改。例如,我尝试使用以下行删除前四行作为第一步:
(Get-Content $file | Select-Object -Skip 4) | Set-Content $file
文件随后似乎丢失了制表符,因此不再被分隔。
如何在不丢失制表符的情况下删除第一行和第一行#?提前致谢!
这可以通过这样的方式完成
$data = Get-Content $file | Select-Object -Skip 4
$data[0] = $data[0] -replace '^#\s*', ''
现在您可以覆盖该文件:
$data | Set-Content $file -Force
或直接将其用作 Powershell 中的对象(csv 对象是 PSObject 数组)
$csv = ($data -join [environment]::NewLine) | ConvertFrom-Csv -Delimiter "`t"
或者使用这个转换后的对象再次写出文件
$csv | Export-Csv -Path $file -Delimiter "`t" -NoTypeInformation -Force