'^M'캐릭터 라인의 끝에서
-
09-06-2019 - |
문제
을 실행할 때 특정 SQL 스크립트는 유닉스에서 환경,내가 이를 보고'^M'성격의 끝에서 각 라인의 SQL 스크립트를 그대로 반향을 명령 라인입니다.몰에서는 OS SQL 스크립트가 원래 만들어집니다.
원인이 무엇이며 어떻게 해야 하나요?
해결책
그것은에 의해 발생 DOS/Windows 라인 끝 자입니다.다음과 같 에스플래네이드 라군 앤디는 말했다,Unix 명령 dos2unix 도움이 될 문제를 해결합니다.더 자세한 정보를 원하시면,당신은 당신을 읽을 수 있는 남자 페이지에는 명령입니다.
다른 팁
해결 라인 엔딩 vi
실행하여 다음과 같다:
:set fileformat=unix
:w
가장 쉬운 방법은 사용 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
od -a $file
유용한 사람들을 탐구 유형의 질문에는 리눅스에서(유사한 dumphex 에 위).
Perl 에서 원하지 않는 경우를 설정하$/변하기 쉬운 사용 씹는()할 수 있습:
$var =~ /\r\n//g;
나의
다른 vi 는 명령을 할 것이다: :%s/.$//
이제 마지막 문자는 각 라인에서 파일입니다.의 단점은 이 검색하고 대체 명령이지 않는다는 것을 걱정 마지막 문자가하지 않도록 주의해 주십시오를 호출됩니다.