[Solved] How to fix broken lines records of a file using PowerShell?


My instinct was to do something similar to Karthick’s answer, however I first took a look at the output of Import-Csv. Surprisingly it puts the line break in the individual property where it was found like:

Import-Csv C:\temp\Broken.csv | fl 

EmpId       : 1
EmpName     : Jack
EmpLocation : Austin

EmpId       : 2
EmpName     : Pet
              er
EmpLocation : NYC

EmpId       : 3
EmpName     : Raj
EmpLocation : Delhi

Notice “peter” is broken across 2 lines.

So I saw some potential to bring the objects in and modify the underlying property values instead of trying to fix up the string data. I cooked up the below:

$CSVData = Import-Csv C:\temp\Broken.csv  

$CSVData | 
ForEach-Object{
    ForEach( $Property in $_.PSObject.Properties.Name )
    {
        $_.($Property) = $_.($Property) -replace "(`r|`n)"
    }
}

$CSVData

# If you want to re-export:
$CSVData | Export-Csv -Path c:\temp\Fixed.csv -NoTypeInformation

This code should work regardless of which field has the line break. Give it a shot and let me know. Thanks!

4

solved How to fix broken lines records of a file using PowerShell?