Чтобы удалить CR не в конце строки с помощью sed
, вы можете сделать:
CR=$(printf '\r')
sed -e :1 -e "s/$CR\(.\)/\1/g;t1" < infile > outfile
Или, поскольку вы в Ubuntu, где sed
- это GNU sed
:
sed -E ':1;s/\r(.)/\1/g;t1' < infile > outfile
Он ищет CR, за которым следует символ (что происходит для всех CR, кроме тех, которые находятся в конце строки), и заменяет их этим персонажем (записано в \ 1
). Он делает это многократно в цикле для учета последовательных CR.
Теперь это только для импорта в программное обеспечение Unix, вы также можете удалить все CR, так что вы получите текстовый файл в формате Unix (окончание строк CRLF только для ОС Microsoft, вам очень повезло, что это программное обеспечение в первую очередь понимает строки с завершением CRLF):
tr -d '\r' < infile > outfile