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}'