我有一个包含时间戳的文件:
"buildTimestamp": "2021-07-19T17:00:00Z"
Run Code Online (Sandbox Code Playgroud)
我想使用一行命令将其替换为当前的构建时间。
date | xargs -I {} perl -pi -e 's/2021-07-19T17:00:00Z/"$0"/g' serviceProperties.json
Run Code Online (Sandbox Code Playgroud)
但它没有按预期工作。有什么建议么?
您确实应该使用 JSON 解析器来处理 JSON 数据。jq可以做这个工作。
如果你的文件看起来像
{
"foo": {
"bar": {
"buildTimestamp": "2021-07-19T17:00:00Z"
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后
jq '.foo.bar.buildTimestamp = (now | strftime("%FT%TZ"))' serviceProperties.json
Run Code Online (Sandbox Code Playgroud)
于 2022 年 2 月 24 日 16:36:15 America/New_York 输出此内容
{
"foo": {
"bar": {
"buildTimestamp": "2022-02-24T21:36:15Z"
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果你不能提倡至少jq将JSONperl 模块加入其中:
perl -MJSON -MPOSIX=strftime -0777 -nE '
$json = JSON->new();
$data = $json->decode($_);
$data->{foo}{bar}{buildTimestamp} = strftime("%FT%TZ", gmtime);
say $json->pretty->encode($data);
' serviceProperties.json
Run Code Online (Sandbox Code Playgroud)
{
"foo" : {
"bar" : {
"buildTimestamp" : "2022-02-25T14:41:04Z"
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |