Ах, теперь, когда вы указали свои значения CSV, это не должно быть слишком сложным.
# I have faked the input using a here-string, but in real life, you should use
# $csv = Import-Csv -Path <PATH TO THE CSV FILE>
$csv = @"
Name,Department,Team,Task
"Jack","QA","AF","He need to work
He needs to update
He needs to plan"
"Sam","Dev","Retail","He need to work
He needs to update
He needs to plan"
"@ | ConvertFrom-Csv
# convert all newlines to a full-stop dot and replace multiple spaces in the Task field to become a single space character
$csv | ForEach-Object {
$_.Task = $_.Task -replace '[\r?\n]+', '. ' -replace '\s{2,}', ' '
# if you just want to 'normalize' whitespaces like a browser does, use this instead.
# $_.Task = $_.Task -replace '\s+', ' '
}
Теперь переменная $csv
содержит эти данные:
Name Department Team Task
---- ---------- ---- ----
Jack QA AF He need to work. He needs to update. He needs to plan
Sam Dev Retail He need to work. He needs to update. He needs to plan
Затем запишите обновленный файл CSV, используя точки с запятой в качестве разделителя
$csv | Export-Csv -Path '<PATH TO THE EXPORTED CSV FILE>' -NoTypeInformation -Delimiter ';'
Надеюсь, это поможет
EDIT
Что касается вашего комментария, я понимаю, что в других столбцах могут быть новые строки.
Это обновленный скрипт, который преобразует любое поле в файле в одну строку, если он содержит символы новой строки.
# Again, I have faked the input using a here-string, but in real life, you should use
# $csv = Import-Csv -Path <PATH TO THE CSV FILE>
$csv = @"
Name,Department,Team,Task
"Jack","QA","AF
XYZ","He need to work
He needs to update
He needs to plan"
"Sam","Dev","Retail
Sales","He need to work
He needs to update
He needs to plan"
"@ | ConvertFrom-Csv
# get an array of the header names
$headers = $csv[0].PSObject.Properties.name
$csv | ForEach-Object {
foreach ($hdr in $headers) {
# this regex converts all newlines to a full-stop dot and replaces multiple spaces to become one single space character
$_.$hdr = $_.$hdr -replace '[\r?\n]+', '. ' -replace '\s{2,}', ' '
# if you just want to 'normalize' all whitespaces like a browser does, use this instead.
# $_.$hdr = $_.$hdr -replace '\s+', ' '
}
}
После этого переменная $csv
содержит эти данные:
Name Department Team Task
---- ---------- ---- ----
Jack QA AF. XYZ He need to work. He needs to update. He needs to plan
Sam Dev Retail. Sales He need to work. He needs to update. He needs to plan
Экспорт в новый файл CSV как обычно:
$csv | Export-Csv -Path '<PATH TO THE EXPORTED CSV FILE>' -NoTypeInformation -Delimiter ';'