Удаление новой строки из файла 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
файл и добавьте приведенную выше команду, чтобы исправить вашу проблему.
Надеюсь, что это поможет вам.