Unix(AIX)와 Windows 간에 파일을 전송하는 데 문제가 있습니다. Unix에 Windows 폴더를 마운트하려면 다음 마운트 명령을 사용했습니다.
mount -v cifs -n /admin/@dmin -o file_mode=775,dir_mode=775,uid=0,gid=0 /TEST/Finance
내 Windows 컴퓨터에서는 이 설치 디렉터리에서 처리하기 위해 이러한 파일을 선택합니다. IBM Connect:Direct를 사용하여 파일을 전송합니다.
문제는 Unix의 Windows 마운트에서 Windows 서버로 파일을 이동할 때 내 파일에 CR(캐리지 리턴)이 없고 LF(줄 바꿈)만 있다는 것입니다. 즉, 메모장으로 파일을 열면 모든 텍스트는 한 줄로 볼 수 있습니다.
Unix에서 Windows로 파일을 전송할 때 CR 및 LF를 보존하는 방법은 무엇입니까?
내 마운트 명령에 문제가 있습니까?
답변1
제 생각에는 설치와 관련이 없을 수도 있습니다. CR 문자가 원래 파일에 존재했습니까? AIX에 대해 실제로 확인하지는 않았지만 존재하지 않는다고 가정하면 unix2dos
이를 사용하여 추가할 수 있습니다. 다음과 같이 sed를 사용할 수 있습니다.
sed -i -e 's/\n/\r\n/g' <file>
사용할 수 있는 것이 없는 경우 unix2dos
. 이 -i
플래그는 sed에게 파일을 제자리에서 수정하라고 지시합니다. 일반적으로 결과를 표준 출력으로 인쇄합니다. -e
sed에게 무언가를 하라고 지시하는 플래그 는 얼마든지 가질 수 있습니다 . 이 예에서는 작업을 사용하여 s
값을 바꿉니다. /
대체 명령의 구분 기호 로 사용됩니다 . 첫 번째 부분 \n
은 우리가 찾고 있는 패턴이고 두 번째 부분 \r\n
은 우리가 바꾸고 싶은 패턴입니다. 마지막 것은 g
sed에게 각 줄의 첫 번째 위치뿐만 아니라 보이는 모든 곳에서 일치하도록 지시합니다(줄의 끝을 일치시킬 때는 중요하지 않을 수 있지만).
답변2
파티션이 어떻게 마운트되는지는 중요하지 않습니다. 모든 파일의 모든 바이트가 전송됩니다. 전송 후 파일에 캐리지 리턴이 없다면 이전에는 캐리지 리턴이 없었던 것입니다. 파일 인코딩을 확인하기 위해 AIX에서 어떤 명령을 실행해야 할지 모르겠지만 바이너리 편집기에서 해당 줄이 LF 또는 CRLF로 끝나는지 확인할 수 있습니다.
UNIX에서 Windows로 텍스트 파일을 복사하고 줄 바꿈을 CRLF로 변환하려는 경우 ftp
ASCII 모드에서 사용할 수 있습니다 . 직렬 연결도 개행 변환을 할 수 있다고 생각합니다. 나는 전송 중에 텍스트를 변환하려고 시도하는 다른 프로토콜을 알지 못합니다. 물론 일부 있을 수도 있습니다.
전송 전후에 모든 파일을 변환하거나 UNIX 개행 문자를 이해하는 Windows 편집기를 사용할 수도 있습니다.