0x0D, 0x0A 문자를 찾아 바꾸는 정규식

0x0D, 0x0A 문자를 찾아 바꾸는 정규식

0x0A0x0D줄 중간에 개행 문자( )가 있는 데이터베이스 덤프의 텍스트 파일이 있습니다. 이 문자를 쉼표로 바꾸고 싶지만 이 문자가 실제 개행 문자이기 때문에 그렇게 할 수 없습니다.하다줄바꿈을 원하세요!

하지만 유지하려는 개행 시퀀스가 ​​공백 문자( )로 둘러싸여 있다는 것을 알았으므로 정규 표현식을 사용하여 선행 또는 후행 공백 없이 0x20모든 시퀀스를 찾고 바꿀 생각입니다 .0x0A0x0D

어떻게 해야 하나요?

답변1

물론 공백 문자에 대한 정규식은 입니다 \s. 그러나 공백이 아닌 문자를 원하므로 \S!를 사용할 수 있습니다. 따라서 대체하려는 정규식은 입니다 \S\n\r\S.

편집하다:

#!/usr/bin/perl
use strict; use warnings;
my $pattern = "xxxxxxxxxxxxxxxxxxxy\n\ryxxxxxxxxxxxxxxxxxxx \n\r xxxxxxxxxxxxxxxxxxxy\n\ryxxxxxxxxxxxxxxxxxxx";
$pattern =~ s/(\S)(\n\r)(\S)/$1$3/g;
print "$pattern\n";
exit;

결과:

xxxxxxxxxxxxxxxxxxxyyxxxxxxxxxxxxxxxxxxx 

 xxxxxxxxxxxxxxxxxxxyyxxxxxxxxxxxxxxxxxxx

$1$3일치하는 문자를 유지할 수 있도록 대체할 정규식을 변경했습니다 \S.

답변2

이것은 GNU awk를 사용하는 한 가지 방법입니다. 설정기록 구분 기호 RS유지하려는 구분 기호를 일치시키고 다른 \r\n시퀀스를 지웁니다.

gawk -vRS=' \r\n ' '{gsub(/\r\n/, ""); printf "%s%s", $0, RT}'

관련 정보