Perl: 따옴표 사이의 쉼표를 @ 기호로 바꿉니다.

Perl: 따옴표 사이의 쉼표를 @ 기호로 바꿉니다.

닫는 따옴표 중 일부가 다음 줄에 나타나는 까다로운 텍스트 블록이 있습니다. 따옴표 사이에 나타나는 모든 쉼표를 @ 기호로 바꾸고 싶습니다.

"----, ----",, ----, ----,,"",start quote," starting
 next line with end quote, ",---,, "--- ,", "begin quote ,,
,,nxt line end quote ",----, ----",, ----, "----,,"---","",
---- ,","----, ----",,"", --",--,----,,,

sed다음 줄의 까다로운 닫는 따옴표가 아니었지만 사용하는 데 문제가 있는 경우 를 사용하여 이 작업을 수행할 수 있습니다 perl.

답변1

따옴표를 중첩하거나 이스케이프할 수 없는 경우 입력을 따옴표로 나누고 각 홀수 요소를 수정한 다음 다시 따옴표로 연결하면 됩니다.

#!/usr/bin/perl
use warnings;
use strict;

my $input = '"----, ----",, ----, ----,,"",start quote," starting
 next line with end quote, ",---,, "--- ,", "begin quote ,,
,,nxt line end quote ",----, ----",, ----, "----,,"---","",
---- ,","----, ----",,"", --",--,----,,,';

my @segments = split /"/, $input;  # fix SO syntax highlighting: "
s/,/@/g for @segments[ grep $_ % 2, 0 .. $#segments ];
print join '"', @segments;

관련 정보