문제

을 실행할 때 특정 SQL 스크립트는 유닉스에서 환경,내가 이를 보고'^M'성격의 끝에서 각 라인의 SQL 스크립트를 그대로 반향을 명령 라인입니다.몰에서는 OS SQL 스크립트가 원래 만들어집니다.

원인이 무엇이며 어떻게 해야 하나요?

도움이 되었습니까?

해결책

그것은에 의해 발생 DOS/Windows 라인 끝 자입니다.다음과 같 에스플래네이드 라군 앤디는 말했다,Unix 명령 dos2unix 도움이 될 문제를 해결합니다.더 자세한 정보를 원하시면,당신은 당신을 읽을 수 있는 남자 페이지에는 명령입니다.

다른 팁

해결 라인 엔딩 vi 실행하여 다음과 같다:

:set fileformat=unix

:w

원인 사이의 차이는 방법은 Windows 기반으로 기반의 OS 와 유닉스 기반의 OS 저장인 마커입니다.

윈도우 기반의 운영 시스템 덕분에,그들의 DOS 문화 유산,저장 끝 라인으로는 한 쌍의 캐릭터 0x0D0A (캐리지 리턴+line feed).유닉스 기반의 운영을 시스템 사용 0x0A (a 라인 피드).이 ^M 신을 보는 시각적으로 표현 0x0D (a 캐리지 리턴).

dos2unix 이는 데 도움이 됩니다.당신은 아마도 조정이 필요한 원 스크립트를'유닉스 친화적인'.

가장 쉬운 방법은 사용 vi. 나는 소리나 그는 간단하고에 이미 설치되어 있는 대부분의 UNIX 환경입니다.이^M 새로운 라인에서 윈도우/DOS environment.

명령 프롬프트에서: $ vi filename

한 다음":"을 얻을 명령하는 모드입니다.

검색하고 세계적으로 모두 교체 :%s/^M//g "을 누르고 다음 컨 V 키를 누르면 그 다음 M"는 것이 대체^M 는 아무것도 없습니다.

다음 글을 쓰고 종료"입력:wq"수행!

을 사용하여 시험 dos2unix 하는 스트립^M.

에서 vi,지 :%s/^M//g

을 얻 ^M 를 개최 CTRL 키를 누르 V 다음 M (두 ctrl 키를 누른 상태)및 ^M 이 나타납니다.이 모든 것을 찾을 수 있 발생과 교체하는 아무것도 없습니다.

SQL 스크립트가 원래 만든 Windows OS.는'^M'캐릭터의 결과 창 및 유닉스는 다른 아이디어에 대해 무엇을 위해 사용하는 end-of-선 문자입니다.당신이 사용할 수 있습 perl 에서 명령행하여이 문제를 해결합니다.

perl -pie 's/\r//g' filename.txt

이^M 로 인해 일반적으로 윈도우 운영자에 줄바꿈,번역에 Unix 처럼 보이는^M.명령 dos2unix 제거해야하게

dos2unix[옵션][-c convmode][-o 파일...][-n 은 파일 outfile...]

C:\tmp\text>dos2unix hello.txt helloUNIX.txt

Sed 더욱 광범위하게 이용할 수 있고 이것을 할 수 있는 일의 종류는 경우 또한 dos2unix 가 설치되지 않았

C:\tmp\text>sed s/\r// hello.txt > helloUNIX.txt  

수도 tr:

cat hello.txt | tr -d \r > helloUNIX2.txt  

결과는 다음과 같습니다:

C:\tmp\text>dumphex hello.txt  
00000000h: 48 61 68 61 0D 0A 68 61 68 61 0D 0A 68 61 68 61 Haha..haha..haha  
00000010h: 0D 0A 0D 0A 68 61 68 61 0D 0A                   ....haha..  

C:\tmp\text>dumphex helloUNIX.txt  
00000000h: 48 61 68 61 0A 68 61 68 61 0A 68 61 68 61 0A 0A Haha.haha.haha..  
00000010h: 68 61 68 61 0A                                  haha.  

C:\tmp\text>dumphex helloUNIX2.txt  
00000000h: 48 61 68 61 0A 68 61 68 61 0A 68 61 68 61 0A 0A Haha.haha.haha..  
00000010h: 68 61 68 61 0A                                  haha.  

대체^M 에 문자를 편집기 vi 아래에 사용

텍스트 파일을 열고 말 t1.txt

vi t1.txt

명령을 입력 모드를 눌러 shift + :

다음 키를 눌러 언급했듯이 %s/^M/\r/g

in above ^M is not (shift + 6)M instead it is (ctrl + V)(ctrl + M)

dos2unix 명령을 사용하는 것 표준 같은 유틸리티 sed.

예를 들어, dos unix:

sed 's/\r$//' dos.txt > unix.txt

unix dos:

sed 's/$/\r/' unix.txt > dos.txt

를 제거할 수 있습^M 에서 직접 파일을 통해 sed 명령,예를 들어:

sed -i'.bak' s/\r//g *.*

당신은 행복과 변화,제거합니다.bak 파:

rm -v *.bak

변환 DOS/Windows( )라인 엔딩 Unix( )라인의 말단,with tr:

tr '\r\n' '\n' < dosFile.txt > unixFile.txt

게시물에 대한 대체를 줄 바꿈에서 유닉스 command line

od -a $file 유용한 사람들을 탐구 유형의 질문에는 리눅스에서(유사한 dumphex 에 위).

Perl 에서 원하지 않는 경우를 설정하$/변하기 쉬운 사용 씹는()할 수 있습:

$var =~ /\r\n//g;

나의

다른 vi 는 명령을 할 것이다: :%s/.$// 이제 마지막 문자는 각 라인에서 파일입니다.의 단점은 이 검색하고 대체 명령이지 않는다는 것을 걱정 마지막 문자가하지 않도록 주의해 주십시오를 호출됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top