Мои заголовки следующие:
Avis,N° Invent.,Cd.Srv.Cl.,Client Name
Я нашел этот код для изменения заголовков
Import-Csv "$treatmentfolder\data.csv" |
Select-Object @{expression={$_.Avis}; label='avis'} |
Export-Csv -NoTypeInformation "$treatmentfolder\data2.csv"
Как изменить имена заголовков, в которых используются символы пробела, .
, °
и т. Д.?
2 ответа
Чтобы выбрать и переименовать конкретное поле, введите в кавычки имя поля, имя которого вы хотите изменить:
... | Select-Object @{n='no_invent';e={$_.'N° Invent.'}}, ... | ...
Чтобы заменить конкретное поле, исключите исходное поле в дополнение к созданию переименованного поля:
... | Select-Object *,@{n='no_invent';e={$_.'N° Invent.'}} -Exclude 'N° Invent.' | ...
Поскольку CSV - это просто текстовый файл, мы можем рассматривать его как замену строки в первой строке файла (элемент массива 0
)
В этих параметрах используется простое выражение регулярного выражения для удаления всего, что не является: 0-9
a-z
A-Z
,
или
(пробел), поэтому просто измените любые другие символы, которые вы хотите сохранить в регулярном выражении. Это будет работать с любыми именами заголовков.
$content = Get-Content -Path "$treatmentfolder\data.csv"
$content[0] = $content[0] -replace '[^0-9a-zA-Z, ]'
Set-Content "$treatmentfolder\data.csv"
Другой вариант - объединить несколько replace
вместе, это позволяет вам добавлять / удалять / изменять заголовки по своему усмотрению. Но в отличие от варианта выше, он жестко привязан к конкретным именам заголовков, поэтому не так просто запускать разные файлы.
$content[0] = $content[0] -replace 'N° Invent.','No_Invent' -replace 'Cd.Srv.Cl.','Cd-Srv-Cl'
Похожие вопросы
Новые вопросы
powershell
PowerShell - это кроссплатформенная утилита командной строки и сценариев от Microsoft. Используйте этот тег только для вопросов о написании и выполнении сценариев PowerShell. Вопросы программирования, относящиеся к кроссплатформенной версии PowerShell Core (Windows, macOS и Linux), должны быть помечены [powershell-core]. Вопросы о системном администрировании следует задавать в случае сбоя суперпользователя или сервера.