
나중에 스프레드시트에서 처리하기 위해 PDF 파일에서 데이터 선택을 자동화하고 싶습니다. 1: 메모장을 사용하여 모든 텍스트를 .txt 파일로 복사합니다. 2: Powershell을 사용하여 모든 줄 바꿈 CRLF를 제거하여 단일 줄 파일을 만듭니다. - 확인
3: 원치 않는 텍스트를 잘라내는 Sed 편집이 작동하지 않습니다(저는 2년 동안 sed를 성공적으로 사용해 왔습니다).
powershell -command ""$(Get-Content T1.txt)" > t2.txt"
sed -i -r "s/Limited/XX/g" t2.txt - 작동하지 않습니다.
그러나 txt 파일을 생성하기 위해 Notepad++(정규식 \r\n 사용)를 사용하여 모든 줄 바꿈을 수동으로 제거하면 동일한 sed 명령이 정상적으로 작동합니다. 어떤 아이디어가 있나요? .bat 파일에서 모든 줄 바꿈을 제거하는 대신 사용할 수 있을까요? Win7 Prof 64비트를 사용합니다.
답변1
sed
텍스트를 처리하도록 설계된 POSIX 도구입니다. 아마도 "단일 줄 파일"은POSIX 측면의 텍스트 파일:
0개 이상의 줄로 구성된 문자를 포함하는 파일입니다. 행에는 NUL 문자가 포함되지 않으며
{LINE_MAX}
<newline> 문자를 포함하여 길이가 바이트를 초과할 수 없습니다. [...] 많은 유틸리티는 텍스트 파일에서 작동할 때만 예측 가능하거나 의미 있는 출력을 생성합니다.
비어 있지 않으면불완전한 줄오직:
파일 끝에 있는 하나 이상의 <newline>이 아닌 문자 시퀀스입니다.
의 정의와 비교해 보세요.선:
0개 이상의 <newline>이 아닌 문자와 종료 <newline> 문자의 시퀀스입니다.
LF
<newline> 문자입니다( CR
is not; 이 문맥에서는 CR
특별하지 않습니다).
나는 Powershell을 모르고 귀하의 코드가 정상인지 알 수 없지만 모든 줄 바꿈을 제거하면 아마도 불완전한 줄이 생성될 것입니다. 나는 Notepad++가 어쨌든 그 줄을 완성할 만큼 충분히 똑똑하다고 생각합니다.
일부 구현에서는 sed
불완전한 줄을 처리하지 않습니다(예) 그리고 일부는 그렇습니다(적어도 GNU는 sed
그렇습니다). 분명히 당신은 sed
그렇지 않습니다. 해당 항목을 찾 sed
거나 "한 줄"이 <newline> 문자로 올바르게 종료되었는지 확인하세요. 예를 들어 Unix에서는 다음 명령을 사용합니다.
echo >> T1.txt
에 정확히 하나의 <newline> 문자를 추가합니다 T1.txt
. 저는 Powershell 방식을 모릅니다. 죄송합니다.
고정된 내용이 한 줄의 바이트 수를 T1.txt
초과 하는 경우 공식적으로는 여전히 텍스트 파일이 아니므로 텍스트 처리 유틸리티가 여전히 작동하지 않을 수 있습니다. 내 요점은 줄 길이 제한이 있을 수 있으므로 종료 <newline> 문자를 추가하여 파일을 수정한 후에도 어떤 경우에는 작동하지 않을 수 있다는 것입니다.{LINE_MAX}
sed
보다이 답변해결 방법에 대한 아이디어를 얻으려면.