Como uma expressão regular pode ser usada em um arquivo com:
A7247, partOf:["LTA_SO", "dontact"]
alat, partOf:["WTP_ZR"]
yello, partOf:[]
E volte (observe que não faz parte de nada):
A7247:LTA_SO,dontact
alat:WTP_ZR
yello:
Obrigado!
Respostas:
0 para resposta № 1O lado direito (a parte após o :
) se parece com JSON. Se isso for verdade, seria melhor tratá-lo da seguinte maneira:
use strict;
use warnings;
use JSON::XS;
while (<DATA>) {
chomp;
my ($lhs, $rhs) = split(/:/, $_, 2);
my $array_ref = decode_json($rhs);
$lhs = (split(/,/, $lhs))[0];
$rhs = join(",", @$array_ref);
print join(":", $lhs, $rhs), "n";
}
__DATA__
A7247, partOf:["LTA_SO", "dontact"]
alat, partOf:["WTP_ZR"]
yello, partOf:[]
Saída:
A7247:LTA_SO,dontact
alat:WTP_ZR
yello:
-1 para resposta № 2
Usando FPAT
dentro gnu awk
você pode dividir o campo usando o regex fornecido:
awk -v FPAT=""[^"]*"|[^, :"]+," "{
s=d=""
for (i=1; i<=NF; i++) {
gsub(/^"|[",]$/, "", $i)
s = s d $i
d = (d == "" ? ":" : ",")
}
print s (i==2?d:"")
}" file
Saída:
A7247:LTA_SO,dontact
alat:WTP_ZR
yello: