我需要替换配置文件中的多行文字。 我可以使用sed(BusyBox v1.21.1),perl(版本5版本14颠覆2)或python(2.7)。
该文件可以有两种格式: A)
"is_managed": false,
"local_profile_id": 15191724,
"name": "First user"
},
**"session": {
"restore_on_startup": 4,
"restore_on_startup_migrated": true,
"urls_to_restore_on_startup": [ "http://alamakota/" ]
}**
}
或 B)
"is_managed": false,
"local_profile_id": 15191724,
"name": "First user"
},
**"session": {
"restore_on_startup_migrated": true,
}**
}
我想将其更改为:
"is_managed": false,
"local_profile_id": 15191724,
"name": "First user"
},
"session": {
"restore_on_startup": 4,
"restore_on_startup_migrated": true,
"urls_to_restore_on_startup": [ "http://192.168.0.100" ]
}
}
答案 0 :(得分:1)
可能是你想先将它解析为json并在需要时编码回json
use JSON::XS;
my $rh_data = decode_json($json_string);
#then updated values by accesing $rh_data->{xx}{yy} = 'new value';
#and encode back to json
$json_data = encode_json($rh_data);
答案 1 :(得分:0)
show
尝试运行它
while(my $ln = <STDIN>){
if ($ln =~ /^([ ]*)(\*\*)(.*)/) {
print "$1"."$3";
} elsif ($ln =~ /(.*)?(\*\*)([ ]*)$/) {
print "$1"."$3";
} else {
print $ln;
}
}