Символ ^ M, который вы видите, вероятно, на самом деле является возвратом каретки.Вы должны сопоставить те, которые используют \ r в регулярных выражениях.Данные, вероятно, вставляются в базу данных системой, которая использует CRLF в качестве окончания строки (скорее всего, для Windows), а не просто LF (как большинство систем * nix).Я предполагаю, что за ними уже стоит перевод строки, поэтому вы, вероятно, хотите удалить их, а не заменять их новой строкой.
Возможно, в вашей системе доступна команда dos2unix , которая может преобразоватьэти окончания строки для вас.
Вы, вероятно, хотите убедиться, что окончания строк согласованы в первую очередь с помощью dos2unix.После этого вы можете удалить символы новой строки следующим образом: cat infile | dos2unix | tr -d '\n' > outfile
.Если вы хотите, чтобы место, где раньше были разрывы строк, вы можете использовать cat infile | dos2unix | tr '\n' ' ' > outfile
.
. В качестве дополнительного примечания, использование sed для удаления новых строк затруднительно, потому что sed редактирует строки в файле, обрабатывающие по одной строке за раз..