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;

おすすめ記事