如何在包含以下内容的文件上使用正则表达式:
A7247, partOf:["LTA_SO", "dontact"]
alat, partOf:["WTP_ZR"]
yello, partOf:[]
然后回来(注意不是任何事情的一部分):
A7247:LTA_SO,dontact
alat:WTP_ZR
yello:
谢谢!
答案 0 :(得分:0)
右侧(:
之后的部分)看起来像JSON。如果这是真的,那么最好将其视为:
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:[]
输出:
A7247:LTA_SO,dontact
alat:WTP_ZR
yello:
答案 1 :(得分:-1)
在FPAT
中使用gnu awk
,您可以使用提供的正则表达式分割字段:
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
<强>输出:强>
A7247:LTA_SO,dontact
alat:WTP_ZR
yello: