Windows에서 Unix로의 데이터 중립화

Windows에서 Unix로의 데이터 중립화

방금 다른 플랫폼 파일(Windows)에서 다음과 같은 많은 오류가 발생한다는 것을 알았습니다.여기, 내 정규식에서. 대부분의 경우 줄은 ^M.

dos2unix를 수행하는 방법에는 다음과 같이 여러 가지가 있는 것 같습니다.여기설명하다. 그러나 이것이 문자 ^M문제, 즉 모든 Windows 시스템에서 Unix까지 해결하기에 충분한지는 확실하지 않습니다.

샘플 코드

while (my $file = readdir($DIR)) {
    ## Reset the counter
    my $c=0;
    ## Skip any files that aren't .tex
    next unless $file =~ /\.tex$/;

    ## Open the file
    open(my $fh,"$path/$dir/$file");
    ######### TODO  I think the replacement should be done here
    ######### Pseudocode : 's/\r\n/\n/' input.txt

    while (<$fh>) {...}

        s/\r\n\z//;  # TODO bug here, 
                     # This line is not affecting the file globally. 
                     # I need to somehow apply the replament to the file. 
                     # Probably, I should do it globally, since this seems to be only locally. 
                     # What do you think?

내 UNIX 시스템에서 이와 같은 데이터를 반환합니다.

\subsection{3}^MA 45세 남성은 지난 1년 동안 가끔 며칠 전에 먹은 음식에서 입자를 토해냈다고 말했습니다.

다음 대체의 차이점은 무엇입니까?

#1

s/\r\n\z//;

명백한 대체품을 전혀 반환하지 않습니다.

#2

s/\r\n\z//g;

올바른 데이터를 반환하지 않습니다. 위의 데이터{3}^마 4여전히 출력에서 ​​볼 수 있습니다.

#삼

s/\R//g;

잘못된 방향의 데이터를 반환합니다.

\subsection{4}All the following are associated with an increased risk for gallstones, except:
\begin{question}{Why hemolysis can give gall stones?}Bilirubin accumulation.\end{question}
...
\begin{question}{Vomiting. Why?}Neuropathy of stomach. Changes in the nervous system of the intestinal system. Not using insulin all the time. % Ketone irritation possible. % ketoacidosis \end{question}

주석까지 포함하여 모든 것이 한 줄에 있으므로 #2는 아닙니다.

Perl 스크립트에서 win2unix를 실행하는 올바른 방법은 무엇입니까?

답변1

Siyuan Ren의 댓글에 좋은 답변이 있습니다. 특정 방식으로 명령을 사용하십시오.

tofrodos

관련 정보