Usuwanie nowych linii Windows w Linuksie (sed vs. awk)

Mieć rozdzielone pliki z nieprawidłowo umieszczonymi znakami nowej linii w środku pól (nie kończąc linii), pojawiając się jako ^ M w Vimie. Pochodzą z eksportu freebcp (na Centos 6) bazy danych MSSQL. Zrzucanie danych w hex pokazuje r wzorce:

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

Mogę je usunąć za pomocą awk, ale nie mogę zrobić tego samego z sed.

Działa to w awk, całkowite usunięcie przerw w linii:

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

Ale w sed nie ma, pozostawiając feedy liniowe na miejscu:

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

gdzie wydaje się, że nie ma to wpływu:

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

Używanie ^ M w wyrażeniu sed (ctrl + v, ctrl + m) również nie działa.

W przypadku tego rodzaju zadania sed jest łatwiejszy w groku, ale pracuję nad tym, aby dowiedzieć się więcej o obu. Czy używam sed nieprawidłowo lub czy istnieje ograniczenie?

questionAnswers(4)

yourAnswerToTheQuestion