Удаление новой строки из файла CSV

У меня есть скрипт, который преобразует файл Excel в CSV с помощью unoconv. Я заметил, что некоторые записи в CSV добавляются в виде новой строки из-за определенного формата в Excel. Мне было интересно, если так или иначе это может быть обработано в Unix.

образец проблемных данных.

col1, col2, col3
jim,"washington dc
",123

правильные данные должны быть.

col1, col2, col3
jim,"washington dc",123

2 ответа

Вы можете использовать это gnu sed:

cat file

col1, col2, col3
jim,"washington dc
","12
3"
foo, bar, baz
123, abc, xyz

А также sed команда:

sed -E ':a;N;;s/(,"[^"]*)\n/\1/;$!ba' file

col1, col2, col3
jim,"washington dc","123"
foo, bar, baz
123, abc, xyz

Пока вы находитесь в CSV-файле, используйте ниже sed Команда это удалит \n символ с пробелом:-

 modifiedline=$(sed ':a;N;$!ba;s/\n/ /g' $line) 
 echo -e "$modifiedline\n" >> csvfile.csv

Меня устраивает. Вы должны изменить существующий сценарий оболочки, где он втиснет в csv файл и добавьте приведенную выше команду, чтобы исправить вашу проблему.

Надеюсь, что это поможет вам.

Другие вопросы по тегам