我有一個包含時間戳的檔案:
"buildTimestamp": "2021-07-19T17:00:00Z"
我想使用單行命令將其替換為當前的構建時間。
date | xargs -I {} perl -pi -e 's/2021-07-19T17:00:00Z/"$0"/g' serviceProperties.json
但它沒有按預期作業。有什么建議?
uj5u.com熱心網友回復:
您真的應該使用 JSON 決議器來處理 JSON 資料。jq可以做這個作業。
如果您的檔案看起來像
{
"foo": {
"bar": {
"buildTimestamp": "2021-07-19T17:00:00Z"
}
}
}
然后
jq '.foo.bar.buildTimestamp = (now | strftime("%FT%TZ"))' serviceProperties.json
在 2022 年 2 月 24 日 16:36:15 America/New_York 輸出此內容
{
"foo": {
"bar": {
"buildTimestamp": "2022-02-24T21:36:15Z"
}
}
}
uj5u.com熱心網友回復:
假設 serviceProperties.json 中的資料
[
{
"buildTimestamp": "2021-07-19T17:00:00Z"
},
{
"buildTimestamp": "2021-07-19T17:00:00Z"
},
{
"buildTimestamp": "2021-07-19T17:00:00Z"
},
{
"buildTimestamp": "2021-07-19T17:00:00Z"
}
]
運行后date %FT%TZ | xargs -I % perl -pi -e 's/2021-07-19T17:00:00Z/%/g' serviceProperties.json
serviceProperties.json 將是
[
{
"buildTimestamp": "2022-02-25T03:30:20Z"
},
{
"buildTimestamp": "2022-02-25T03:30:20Z"
},
{
"buildTimestamp": "2022-02-25T03:30:20Z"
},
{
"buildTimestamp": "2022-02-25T03:30:20Z"
}
]
當你用 $0 替換它時,它會從 perl 命令中獲取引數,因此你會得到意想不到的結果。取而代之的是使用 xargs 替換一個助手來解決問題。
要了解有關 xargs 在這種情況下如何作業的更多資訊,請閱讀此處
uj5u.com熱心網友回復:
perl -pi -e 's/2021-07-19T17:00:00Z/'"$(date)"'/g' serviceProperties.json
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/432223.html
