以下のコードで現在の時刻を変更するためにsedを使用したいと思います。
time0=$(date '+%Y-%m-%d')
time1=$(date '+%H:%M:%S')
time=$(echo ""$time0"T"$time1"Z")
最初の行で$ timeを置き換える
{
"X-Apple-I-Client-Time" = "2020-07-08T12:55:08Z";
"X-Apple-I-Locale" = "en_US";
"X-Apple-I-MD" = "AAAABQAAABDBy+H0j9QAnYGIzrmKeh9DAAAAAw==";
"X-Apple-I-MD-M" = "6Q3cWbCm2lI9rrTIyrAsku5zxqO/ZAv9HsW5kHo2thiPqFINp0/OsOz++KS/2vc0ImbI2iMVUbYCZjnS";
"X-Apple-I-MD-RINFO" = 50660608;
"X-Apple-I-TimeZone" = "GMT+7";
}
みんなありがとう
ベストアンサー1
now=$(date -u +'%Y-%m-%dT%H:%M:%SZ')
sed 's/\("X-Apple-I-Client-Time" = \).*/\1"'"$now"'";/' file
これにより、現在のUTCタイムスタンプが計算され、シェル変数に保存されますnow
。次に、名前付きファイル内のfile
正確な文字列を含む行を見つけ、"X-Apple-I-Client-Time" =
その後のすべての項目をタイムスタンプと引用符で囲んだものに置き換えます;
。
結果は標準出力に書き込まれます。元のファイルを直接変更したい場合は、以下を使用してください。
now=$(date -u +'%Y-%m-%dT%H:%M:%SZ')
cp file file.tmp &&
sed 's/\("X-Apple-I-Client-Time" = \).*/\1"'"$now"'";/' file.tmp >file &&
rm -f file.tmp
(これは壊れるでしょうfile.tmp
)
システム実装に「現在の場所」編集機能がsed
ある場合はそれを使用できます。バックアップファイルなしで編集するためにFreeBSDとmacOSで空の引数が必要では-i
ありません(参照:sed -i
-i
sed -i(所定の位置で編集)を使用して移植性を達成するには?)。