Unix에서 붙여넣은 줄이 잘못 겹쳐집니다.

Unix에서 붙여넣은 줄이 잘못 겹쳐집니다.

file1다음 줄을 포함하는 파일이 있습니다.

you are searching for a four .
you are searching for a six .
you are searching for a three .
you are searching for an ace .
you are searching for an eight .
you can use empty spaces in the Tab@@ le@@ au to move multiple cards . be careful with K@@ ings in the Reserve : the only way to remove them is by playing them to a Foundation on top of a Queen .
you can use empty spaces in the Tab@@ le@@ au to move multiple cards . be careful with K@@ ings in the Reserve : the only way to remove them is by playing them to a Foundation on top of a Queen .

file2다음 줄로 호출하는 두 번째 파일이 있습니다

four|||Vier
six|||Se@@ chs
for|||nach
searching|||suchen
eight|||Acht
spaces|||Plätze
spaces|||Plätze spaces|||Plätze

그러나 Unix 붙여넣기를 통해 이 줄을 병합하는 명령을 실행한 후

paste file1 file2 > result

내가 얻는 결과는 다음과 같습니다.

you are four|||Vieror a four .
you are six|||Se@@ chsa six .
you are for|||nachfor a three .
you are searching|||suchence .
you are eight|||Achtr an eight .
you can use empty spaces in the Tab@@ le@@ au to move multiple cards . be careful with K@@ ings in the Reserve : the only way to remove them is by playing them to a Fouspaces|||Plätzeof a Queen .
you can use empty spaces in the Tab@@ le@@ au to move multiple cards . be careful with K@@ ings in the Reserve : the only way to remove them is by playing them to a Foundation on top of a Queen .     spaces|||Plätze spaces|||Plätze

나는 무슨 일이 일어나고 있는지 이해하지 못합니다. 각 파일의 병합된 줄이 겹치는 이유는 무엇입니까?

답변1

file1적어도 DOS 텍스트 파일은 있는 것 같아요 . Unix 시스템에서 사용되는 경우 이러한 파일에는 각 줄 끝에 추가 캐리지 리턴 문자가 있습니다. 이것을 터미널에 인쇄할 때 이 캐리지 리턴 문자는 커서를 줄의 시작 부분으로 다시 가져옵니다. 두 파일의 데이터 사이에 삽입된 탭 문자는 paste커서를 오른쪽으로 8문자 이동합니다. 그러면 두 번째 파일의 텍스트가 해당 줄의 내용을 덮어쓰게 되어 잘못된 출력 결과가 나타납니다.

다음 도구를 사용하여 텍스트 파일을 변환해야 할 수도 있습니다. dos2unix(이렇게 하면 파일이 일반적인 Windows 텍스트 인코딩에서 Unix 등에서 더 일반적으로 사용되는 인코딩으로 올바르게 변환됩니다.)

관련 정보