Удаление новых строк Windows в Linux (sed и awk)

Иметь несколько файлов с разделителями с неправильно помещенными символами новой строки в середине полей (не в конце строки), которые отображаются как ^ M в Vim. Они происходят из freebcp (на Centos 6) экспорта базы данных MSSQL. Вывод данных в шестнадцатеричном формате показывает \ r \ n паттерны:

$ xxd test.txt | grep 0d0a
0000190: 3932 3139 322d 3239 3836 0d0a 0d0a 7c43

Я могу удалить их с помощью awk, но не могу сделать то же самое с sed.

Это работает в awk, полностью удаляя разрывы строк:

awk 'gsub(/\r/,""){printf $0;next}{print}'

Но этого в sed нет, оставляя перевод строки на месте:

sed -i 's/\r//g'

где это, кажется, не имеет никакого эффекта:

sed -i 's/\r\n//g'

Использование ^ M в выражении sed (ctrl + v, ctrl + m) также, похоже, не работает.

Для задач такого рода sed проще освоить, но я работаю над тем, чтобы узнать больше об обоих. Я неправильно использую sed или есть ограничение?

Ответы на вопрос(4)

Ваш ответ на вопрос