유닉스 줄 끝이 있는 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
\n
Perl은 이전 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 사용을 고려해 보셨나요?