
^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 -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
항목 도 제거합니다 .