두 개의 CSV 파일이 있습니다.
test1.csv
1
2
3
4
test2.csv
6
7
8
9
이 두 파일을 수평으로 병합하고 싶습니다. 이를 위해 " paste -d , test1.csv test2.csv > paste.csv
이 파일을 메모장에서 열면 올바르게 보입니다."를 사용합니다.
paste.csv
1,6
2,7
3,8
4,9
그러나 Excel에서 Paste.csv를 로드하면 다음과 같습니다.
내가 무엇을 놓치고 있나요? 미리 감사드립니다!
PS 이것은 중요하지 않을 수도 있지만 저는 Windows에서 Cygwin을 사용하고 있습니다.
업데이트: 메모장에서 Paste.csv를 열었을 때 이상한 점을 발견했습니다. 숫자와 쉼표 사이에 보이지 않는 문자가 있는 것 같습니다. 예를 들어 1 사이에 커서를 놓고 백스페이스를 누르면 아무 일도 일어나지 않습니다. 백스페이스를 다시 누르면 예상대로 1이 제거됩니다. 보이지 않는 문자를 모두 제거한 다음 Excel에서 Paste.csv를 로드하면 맞습니다!
답변1
유닉스 대표개행 문자LF 문자 사용(새 줄 = \n
= ^J
= 10진수 10 = 8진수 012 = 16진수 0x0a). Windows에서는 두 개의 문자 시퀀스 CR 및 LF를 사용하여 줄바꿈 문자(CR = 캐리지 리턴 = \r
= ^M
= 10진수 13 = 8진수 015 = 16진수 0x0d)를 나타냅니다. Windows 텍스트 파일이 Unix 유틸리티에 의해 처리될 때 각 줄은 가짜 CR 문자로 끝납니다.
Cygwin 유틸리티는 Linux 도구의 직접 포트입니다. Windows 텍스트 파일을 구체적으로 처리하지 않으므로 CR 문자는 줄 내용으로 끝납니다. 붙여넣은 파일에는 각 쉼표 앞에 CR이 있습니다.
먼저 파일을 Unix 형식으로 변환할 수 있습니다.
dos2unix *.csv
paste -d , test1.csv test2.csv > paste.csv
또는 CR 문자만 제거할 수도 있습니다. 여기에서는 해당 항목을 줄에서 제거합니다. 일부 다른 텍스트 작업에서는 처리하기 전에 제거해야 합니다.
paste -d , test1.csv test2.csv | tr -d '\r' > paste.csv