Лучший инструмент для удаления концов линии DOS и соединения линии снова - PullRequest
0 голосов
/ 23 августа 2010

У меня есть CSV-файл, в который закрались некоторые строки ^ M dos, и я хочу избавиться от них, а также 16 пробелов и 3 вкладки, которые следуют.Мол, я должен объединить эту строку со следующей вниз.Вот плохая запись и хороший пример того, что я имею в виду:

"Mary had a ^M
                  little lamb", "Nursery Rhyme", 1878
"Mary, Mary quite contrary", "Nursery Rhyme", 1838

Я могу удалить ^ M, используя sed, как вы можете видеть, но я не могу понять, как изменить конец строки nixчтобы объединить строки обратно.

sed -e "s/^M$             //g" rhymes.csv > rhymes.csv

ОБНОВЛЕНИЕ

Затем я прочитал «Однако формат Microsoft CSV позволяет вставлять новые строки в поле в двойных кавычках.возможность для ваших данных, вы должны рассмотреть возможность использовать что-то кроме sed для работы с файлом данных. "from: http://sed.sourceforge.net/sedfaq4.html

Итак, редактируете мой вопрос, чтобы спросить, какой инструмент мне следует использовать?

Ответы [ 2 ]

2 голосов
/ 24 августа 2010
dos2unix  file_name

для преобразования файла или

dos2unix old_file new_file

для создания нового файла.

2 голосов
/ 23 августа 2010

С помощью Как я могу заменить символ новой строки (\ n) с помощью sed? , я сделал это:

sed -e ':a;N;$!ba;s/\r\n                \t\t\t/=/' -i rhymes.csv

<CR> <LF> <16 spaces> <3 tabs>

Если вы просто хотите удалить CR, вы можете использовать:

<yourfile tr -d "\r" | tee yourfile

(или если два входных и выходных файла различаются: <yourfile tr -d "\r" > output)

...