programing

Excel은 탭으로 구분된 파일을 줄 바꿈 없이 저장합니다(UNIX/Macos X).

linuxpc 2023. 6. 15. 21:38
반응형

Excel은 탭으로 구분된 파일을 줄 바꿈 없이 저장합니다(UNIX/Macos X).

이것은 제가 흔히 가지고 있는 문제이고 제 해결책은 약간 경솔한 것입니다.그래서 저는 그 문제에 대한 빠른 해결책과 설명을 찾고 있습니다.

문제는 Excel(mac 2011)에 스프레드시트를 탭으로 구분된 파일로 저장하기로 결정했을 때 문제가 완벽하게 해결되는 것처럼 보인다는 것입니다.Perl을 사용하여 파일을 한 줄씩 구문 분석할 때까지.어떤 이유에서인지 문서 전체를 한 줄로 늘어놓습니다.

나의 잔인한 해결책은 웹 브라우저에서 파일을 열고 TextEdit(나는 리치 텍스트 형식을 사용하지 않음)의 탭 구분 파일에 정보를 복사하여 붙여넣는 것입니다.이 수정을 하기 전에 파일 끝에 새 줄을 추가하려고 했지만 문제가 해결되지 않습니다.

이게 무슨 일입니까?설명해 주시면 감사하겠습니다.

~고마워요!~

문제는 서로 다른 시스템에서 새 줄을 정의하는 실제 문자 코드입니다.Windows 시스템은 일반적으로 캐리지 리턴+라인을 사용합니다.피드(CRLF) 및 *NIX 시스템은 라인피드(LF)만 사용합니다.

이러한 문자는 RegEx에서 \r\n 또는 \n(각각)으로 표시될 수 있습니다.

텍스트 파일을 통해 해시하려면 줄 바꿈 문자를 구문 분석해야 하는 경우가 있습니다.의 DOS-to-UNIX에 대해 다음을 시도해 보십시오.

perl -pi -e 's/\r\n/\n/g' input.file

또는 sed를 사용하는 UNIX-to-DOS의 경우:

$ sed 's/$'"/`echo \\\r`/" input.txt > output.txt

또는 SED를 사용하는 DOS-to-UNIX의 경우:

$ sed 's/^M$//' input.txt > output.txt

이것에 대한 아주 간단한 해결책을 찾았습니다.Excel에서 클립보드로 데이터를 복사하여 Google 스프레드시트에 붙여넣습니다.Google 스프레드시트 파일을 '탭으로 구분된 값.tsv'로 다운로드합니다.이렇게 하면 문제가 해결되고 각 줄에 대한 줄 끝이 있는 탭 구분 기호가 있습니다.

하지만 또 다른 해결책은...

  • 탭으로 구분된 파일의 경우 문서를 저장합니다.Windows Formatted Text (.txt)파일 형식
  • 쉼표로 구분된 파일의 경우 문서를 'Windows 쉼표로 구분된(.csv)' 파일 형식으로 저장합니다.

Perl에는 유용한 정규식 패턴이 있습니다.\R모든 공통 줄 끝과 일치합니다.실제로 모든 수직 공백과 일치합니다.\v또는 CRLF 조합과 동일합니다.\r\n|\v

이것은 전체 파일을 단일 스칼라로 후루룩할 수 있기 때문에 유용합니다.split /\R/이미 파일 기록 목록을 제공할 것입니다.chomped (만약 당신이 라인 터미네이터를 유지하고 싶다면 당신은 할 수 있습니다.split /\R\K/대신에

또 다른 옵션은 모듈입니다.파일의 내용에 관계없이 줄 끝을 정규화하는 새로운 Perl IO 계층을 제공합니다.

에는 "" "" " " " "를 로드합니다.use PerlIO::eol당신은 그것을 사용할 수 있습니다.open

open my $fh, '<:eol(LF)', 'myfile.tsv' or die $!;

또는 플러그마를 사용하여 모든 입력 파일 핸들에 대한 기본 계층으로 설정할 수 있습니다.

use open IN  => ':raw:eol(LF)';

어떤 플랫폼의 입력 파일로도 잘 작동할 것입니다.

언급URL : https://stackoverflow.com/questions/22052168/excel-saves-tab-delimited-files-without-newline-unix-mac-os-x

반응형