PowerShell: файл с разделителями в виде вкладок фрагментов и кубиков
У меня есть текстовый файл с разделителями табуляции, созданный моей программой резервного копирования. Я хочу иметь возможность импортировать его как массив PowerShell с помощью Import-CSV.
Проблема в том, что первые 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
Я могу это исправить, используя блокнот, чтобы удалить первые четыре строки и удалить первый # из строки заголовка. Файл тогда выглядит так:
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
Кажется, что файл теряет свои вкладки, поэтому он больше не разделяется.
Как я могу удалить строки, а также первый #, не теряя вкладки? Заранее спасибо!
1 ответ
Это может быть сделано что-то вроде этого
$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