복붙노트

[SQL] 행의 끝에 '^ M'문자

SQL

행의 끝에 '^ M'문자

내가 유닉스 환경에서 특정 SQL 스크립트를 실행하면이 명령 줄에 감동 한, 나는 SQL 스크립트의 각 행의 끝에서 '^ M'문자를보고하고 있어요. 나는 SQL 스크립트가 원래 생성 된 OS에 모른다.

원인이 무엇이며 어떻게 해결합니까?

해결법

  1. ==============================

    1.그것은 DOS / 윈도우 라인 끝 문자에 의한 것. 앤디 윗 필드가 말했듯이, 유닉스 명령 DOS2UNIX은 문제를 해결하는 데 도움이됩니다. 더 많은 정보를 원한다면, 당신은 해당 명령에 대한 매뉴얼 페이지를 읽을 수 있습니다.

    그것은 DOS / 윈도우 라인 끝 문자에 의한 것. 앤디 윗 필드가 말했듯이, 유닉스 명령 DOS2UNIX은 문제를 해결하는 데 도움이됩니다. 더 많은 정보를 원한다면, 당신은 해당 명령에 대한 매뉴얼 페이지를 읽을 수 있습니다.

  2. ==============================

    2.다음을 실행하여 VI에서 수정 라인 엔딩 :

    다음을 실행하여 VI에서 수정 라인 엔딩 :

    : 세트 화일 형식 = UNIX

    :에

  3. ==============================

    3.원인은 Windows 기반 기반의 OS와 유닉스 기반의 OS 저장소 행의 끝 마커 방법의 차이이다.

    원인은 Windows 기반 기반의 OS와 유닉스 기반의 OS 저장소 행의 끝 마커 방법의 차이이다.

    0x0D0A (캐리지 리턴 + 줄 바꿈) - 윈도우 시스템, 자신의 DOS 유산 덕분에, 문자의 쌍으로 줄 끝을 저장하는 운영 기준으로합니다. 유닉스 기반의 운영 체제는 0x0A (라인 피드)를 사용합니다. ^를 M 당신이있는 거 보는이 0x0d로 (캐리지 리턴)을 시각적으로 표시 한 것입니다.

    DOS2UNIX이와 함께 도움이 될 것입니다. 당신은 아마 또한 '유닉스 친화적'으로 스크립트의 소스를 조정해야합니다.

  4. ==============================

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

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

    $ VI 파일 이름 : 명령 프롬프트에서

    그리고 언론은 ":"명령 모드로 얻을 수 있습니다.

    검색 및 바꾸기 모든 세계적으로는 다음과 같습니다 다음 % S / ^ M // g "길게 누름 제어 보도 V 다음 아무것도 ^ M을 대체 할 M ".

    그런 다음 작성하고 종료 입력 "WQ를"완료!

  5. ==============================

    5.^ M을 제거하는 DOS2UNIX를 사용해보십시오.

    ^ M을 제거하는 DOS2UNIX를 사용해보십시오.

  6. ==============================

    6.% S / ^ M // g : VI에서,을

    % S / ^ M // g : VI에서,을

    ^ M을 얻으려면 Ctrl 키를 누른 키를 눌러 다음 V M (모두 컨트롤 키를 누른 상태)과 ^ M이 나타납니다. 이 모든 항목을 찾아 아무것도으로 대체됩니다.

  7. ==============================

    7.SQL 스크립트는 원래 윈도우 OS에 만들었습니다. '^ M'문자는 윈도우와 유닉스 줄 끝 문자를 사용하는 것에 대해 다른 생각을 한 결과이다. 당신은이 문제를 해결하려면 명령 줄에서 펄 사용할 수 있습니다.

    SQL 스크립트는 원래 윈도우 OS에 만들었습니다. '^ M'문자는 윈도우와 유닉스 줄 끝 문자를 사용하는 것에 대해 다른 생각을 한 결과이다. 당신은이 문제를 해결하려면 명령 줄에서 펄 사용할 수 있습니다.

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

    8.^는 M은 전형적으로 윈도우 조작 바꿈에 의해 발생하고, M ^ 같은 유닉스 외모로 번역된다. 명령 DOS2UNIX 멋지게을 제거해야합니다

    ^는 M은 전형적으로 윈도우 조작 바꿈에 의해 발생하고, M ^ 같은 유닉스 외모로 번역된다. 명령 DOS2UNIX 멋지게을 제거해야합니다

    DOS2UNIX [옵션] [-c convmode] [-o 파일 ...] [-n INFILE OUTFILE ...]

  9. ==============================

    9.

    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.  
    
  10. ==============================

    10.아래의 VI 편집기 사용에 ^ M 문자를 교체하려면

    아래의 VI 편집기 사용에 ^ M 문자를 교체하려면

    텍스트 파일 말의 t1.txt을 엽니 다

    vi t1.txt
    

    시프트 +를 눌러 명령 모드를 입력합니다 :

    상술 %의 것에 따라 눌러 키 / M ^ / \ R / g

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

    11.나오지도 같은 DOS2UNIX 명령에 대한 대안은 표준 유틸리티를 사용하는 것입니다.

    나오지도 같은 DOS2UNIX 명령에 대한 대안은 표준 유틸리티를 사용하는 것입니다.

    예를 들어, 유닉스에 도스 :

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

    도스에 유닉스 :

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

    12.직접 나오지도 명령, 예컨대 통해 파일에서 ^ M을 제거 할 수 있습니다 :

    직접 나오지도 명령, 예컨대 통해 파일에서 ^ M을 제거 할 수 있습니다 :

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

    변경 나왔습니다 행복이 경우 .BAK 파일을 제거 :

    rm -v *.bak
    
  13. ==============================

    13.유닉스 (\ n)은 TR과 라인 엔딩에 DOS / 윈도우 (\ 연구 \ n)를 행 끝 변환 :

    유닉스 (\ n)은 TR과 라인 엔딩에 DOS / 윈도우 (\ 연구 \ n)를 행 끝 변환 :

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

    포스트에 대한 유닉스 명령 줄에서 뉴 라인 교체

  14. ==============================

    14.OD -a $ 파일 (위의 dumphex 유사) 리눅스에서 문제의 그 유형을 탐구하는 데 유용합니다.

    OD -a $ 파일 (위의 dumphex 유사) 리눅스에서 문제의 그 유형을 탐구하는 데 유용합니다.

  15. ==============================

    15.펄에서, 당신은 $ / 변수 사용 씹는 () 당신은 또한 할 수를 설정하지 않는 경우 :

    펄에서, 당신은 $ / 변수 사용 씹는 () 당신은 또한 할 수를 설정하지 않는 경우 :

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

    내 두 센트

  16. ==============================

    16.할 것이다 또 다른 VI 명령은 : %의 /.$//이 파일의 각 행의 마지막 문자를 제거합니다. 이 검색의 단점과 대체 명령은 그래서를 두 번 호출하지 않도록주의, 마지막 문자가 무엇인지 상관하지 않는다는 것입니다.

    할 것이다 또 다른 VI 명령은 : %의 /.$//이 파일의 각 행의 마지막 문자를 제거합니다. 이 검색의 단점과 대체 명령은 그래서를 두 번 호출하지 않도록주의, 마지막 문자가 무엇인지 상관하지 않는다는 것입니다.

  17. from https://stackoverflow.com/questions/64749/m-character-at-end-of-lines by cc-by-sa and MIT license