파일에서 모든 \r\n을 제거하고 \n을 유지하는 방법

파일에서 모든 \r\n을 제거하고 \n을 유지하는 방법

유닉스 줄 끝이 있는 CSV가 있지만 일부 문자열 값에 Windows 줄 끝이 포함되어 있습니다.

date,notes\n
2014-01-01,"Blah Blah Blah"\n
2014-01-02,"Two things:\r\n  - first thing\r\n  - second thing\n
2014-01-03,"Foo"\n

\n 및 \r은 파일에서 인쇄할 수 없는 문자의 위치만 표시하며 텍스트 편집기에서 파일을 열 때 표시되는 모습은 표시하지 않습니다.

\r\n 인스턴스를 제거하고 싶지만 \n인 실제 줄 끝은 유지하고 싶습니다.출력은 다음과 같아야 합니다.

date,notes\n
2014-01-01,"Blah Blah Blah"\n
2014-01-02,"Two things:  - first thing  - second thing\n
2014-01-03,"Foo"\n

나는 같은 것이 필요 tr -d '\r\n' file.csv하지만 문자열이 삭제되는 위치 는 또는가 \r\n아닙니다 .\r\n

처리하려고 하면 sed한 줄씩 처리한 것처럼 처리되어 실제로 작동하지 않습니다.

date,notes
2014-01-01,"Blah Blah Blah"
2014-01-02,"Two things:\r
  - first thing\r
  - second thing
2014-01-03,"Foo"

답변1

\nPerl은 이전 Unix 도구보다 더 포괄적으로 개행을 포함한 이스케이프 시퀀스를 처리합니다 .

perl -pe 's/\r\n//g'

답변2

다음으로 교체해 보셨나요 sed?

sed 's/\\r\\n//g' -i file.csv

답변3

백슬래시를 피해야 합니다. 즉,

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

작동해야합니다.

답변4

dos2unix 사용을 고려해 보셨나요?

관련 정보