Удаление запятых из столбца csv с помощью powershell

#powershell #csv

#powershell #csv

Вопрос:

У меня есть следующий код, который удаляет все запятые в моем csv-файле, но есть проблема:

Я хочу удалить запятые только в столбце P, а остальные данные должны быть нетронутыми. В настоящее время он добавляет данные под данными csv.

 $inform = Get-Content C:UsersbmdDesktopreport.csv
$inform.ToString()
$y=$inform -replace ',' -replace ''
$y  | Out-file C:UsersbmdDesktopreport.csv -Append
  

Комментарии:

1. Использует ли ваш CSV-файл запятую в качестве разделителя столбцов? Есть ли в вашем csv строка заголовка?

2. Какой тип информации содержится в столбце P? Вам было бы полезно предоставить это. Я бы использовал import-csv, а не get-content, если csv не разделен запятыми.

3. -Append добавляет выходные данные в конец существующего файла. Я думаю, что вы ищете способ сначала манипулировать содержимым CSV, а затем записывать это (все) содержимое в тот же файл?

4. Привет, да, в моем csv есть заголовки.. В основном столбцы от A до O в моем csv-файле представляют собой отдельные столбцы, и данные структурированы.. это только данные в столбце P, разделенные запятыми с кавычками, которые я хотел бы заменить запятой на ничто. Общая цель — просто заменить запятую в столбце p на ничто и сохранить csv как есть..

Ответ №1:

Обычно использовать Import-Csv и Export-Csv будет проще, чем пытаться манипулировать строками в CSV. Не имея образца файла CSV, мы можем только делать предположения. Предполагая, что он содержит true и квалифицирован как необходимые CSV-данные, вы можете попробовать следующее:

 $csv = Import-Csv C:UsersbmdDesktopreport.csv
foreach ($row in $csv) {
    $row.UNSTRUCTURED_VARS = $row.UNSTRUCTURED_VARS -replace ','
}
$csv | Export-Csv C:UsersbmdDesktopreport.csv -NoType
  

Обратите внимание, что если вы используете PowerShell Core или PowerShell 7, вы можете просто использовать Export-Csv with -UseQuotes AsNeeded , и будут указаны только обязательные поля.

Комментарии:

1. Привет @AdminOfThingsI, не могли бы вы проверить, правильный ли приведенный ниже код, поскольку он ничего не делает.

2. Затем вы должны опубликовать образец вашего CSV-файла, чтобы нам не приходилось гадать. Вам также необходимо удалить -Header $headers , если в вашем файле есть заголовки.

3. Вы можете загрузить файл здесь. Colum P Мне не нужны запятые: esquirebank.box.com/s/y187a3oqz4u0fhpz3mq1sdit02pepusk

4. Я внес новое редактирование, в котором будут использоваться исключительно *-Csv команды.