붙여넣기 명령이 개행 문자를 추가하는 이유는 무엇입니까? [복사]

붙여넣기 명령이 개행 문자를 추가하는 이유는 무엇입니까? [복사]

2개의 파일이 있습니다.그리고. 나는 파일 t의 첫 번째 줄 다음에 탭이 오고 그 다음 d의 첫 번째 줄이 오도록 이 파일들을 병합할 수 있기를 원합니다. 짧은 줄의 경우 paste t d잘 작동하는 것 같습니다.

$ cat d t
Highly reactive metals in group 1A of the periodic table.
Fairly reactive metals in group 2A of the periodic table.
alkali metals
alkaline earth metals
$ paste d t
Highly reactive metals in group 1A of the periodic table.   alkali metals
Fairly reactive metals in group 2A of the periodic table.   alkaline earth metals
$ paste t d
alkali mHighly reactive metals in group 1A of the periodic table.
alkalineFairly reactive metals in group 2A of the periodic table.

완전한 문장을 붙여 넣으려고 하면 이상하게 동작하는 것 같습니다. 위에 표시된 대로 용어는 처음 8자로 축소됩니다.

$ paste t d > temp
$ gedit temp &
$ vim temp

gedit를 열면 각 용어 뒤에 개행 문자가 표시됩니다. Vim은 다음을 보여줍니다:

alkali metals^M Highly reactive metals in group 1A of the periodic table.
alkaline earth metals^M Fairly reactive metals in group 2A of the periodic table.

글쎄, 그건 쉽게 고칠 수 있을 것 같아. :%s/^V^M//g모든 캐리지 리턴을 제거하고 모든 것이 올바르게 표시됩니다. 그런데 이러한 캐리지 리턴은 처음에 어떻게 나타났습니까?

내 질문에는 Windows 텍스트 파일의 캐리지 리턴이 포함되어 있어 Unix와 같은 환경에서 이상하게 작동하지만 중복되지는 않습니다.이 문제. 문제는 비슷하지만 증상은 완전히 다릅니다. 웹 검색을 통해 비슷한 문제의 사례를 충분히 찾을 수 없었기 때문에 캐리지 리턴이 범인인지 알아내는 데 약 한 시간이 걸렸습니다. 그래서 제가 이 문제를 직접 해결해서 포스팅을 하게 되었습니다.

답변1

t 소스 파일은 Windows 8에서 메모장을 사용하여 생성되었으며 Ubuntu 13.04에서 내 홈 디렉터리에 복사되었습니다. d의 소스 코드는 Ubuntu의 gedit에서 작성되었습니다. 따라서 캐리지 리턴 문자는 항상 파일에 있습니다. 서로 다른 운영 체제 간에 파일을 이동하면 비슷한 문제가 발생하는 경우가 종종 있는 것 같습니다.

줄 바꿈 차이

줄 끝 변환

관련 정보