텍스트 파일에서 ^M과 다음 줄을 제거하는 방법은 무엇입니까?

텍스트 파일에서 ^M과 다음 줄을 제거하는 방법은 무엇입니까?

^M(캐리지 리턴)이 포함된 다음 줄이 있습니다. ^M+개 행을 삭제하고 싶습니다. 각 ^M 뒤에 새 줄이 있다는 것을 알 수 있는데 이는 바람직하지 않습니다. 내 의도는 제어 문자를 제거하고 한 줄짜리 CSV를 만드는 것입니다.

    '1.0';'';'';'';'Mon Jul 04 00:00:00 CEST 2016';'To cash Pls Acc 4142^M
To cash Pls Acc 4142';'To cash Pls Acc 4142^M
Money';'236159';'236159';'-2000.0';'';'2000.0'

나는 다음을 시도했지만 성공하지 못했습니다. 참고: ^M = 제어 v + 제어 m

cat file.csv | sed 's/[\^M\n]//g' > new_file.csv

위 줄에서는 ^M이 제거되었지만 줄은 여전히 ​​새 줄로 구분되어 있습니다.

예상 출력

 '1.0';'';'';'';'Mon Jul 04 00:00:00 CEST 2016';'To cash Pls Acc 4142To cash Pls Acc 4142';'To cash Pls Acc 4142 Money';'236159';'236159';'-2000.0';'';'2000.0'

답변1

이는 귀하의 경우에 작동합니다.

sed -i ':a;N;$!ba;s/\r\n//g' file.csv

에서:sed가 개행 문자를 대체할 수 있나요?

아니면 이거:

sed -e :a -e '/\r$/N; s/\r\n//; ta' file.csv

에서:http://www.catonmat.net/blog/sed-one-liners-explained-part-one/

이 옵션을 사용할 필요는 없으며 cat필요한 경우 이 옵션을 사용하여 파일을 직접 편집할 수 있습니다.-i

답변2

그렇지 \r않습니다 ^M. 가장 간단한 방법은 다음과 같습니다.

tr -d '\n-\r' < file.

-d\n-\r삭제된 문자 범위인 삭제를 나타냅니다 tr.

\n이 코드는 앞에 " "가 없는 ^M항목 도 제거합니다 .

관련 정보