すべてのエポック時間を見つけて人が読める時間(ミリ秒)に変えたいです。たとえば、新しい起源の時間は最初の列にありますが、ランダムに13桁を検索して「23:59:59 01.01.1980」と同じ時間に置き換えるのではなく、これを行う方法の解決策を見つけました。 Linuxシステムで実行されます。
したがって、時代は次のように見えます。
sms address="+********" body="サンプルテキスト。
答え1
私は以下を使用しますperl
:
perl -MPOSIX -pe 's{(?<!\d)([1-9]\d{9})(\d{3})(?!\d)}{
strftime "%FT%T.$2%z",localtime$1}ge' < your-file
これはゼロ以外の数字で始まり、この数字を超えない13桁のシーケンスと一致するため、タイムスタンプが2001-09-09T01:46:40.000+0000 - 2286-11-20T17:46:39.999+の範囲にあると仮定します。 0000標準フォーマットを消去します(必要に応じてフォーマットを調整2021-05-03T15:47:59.300+0100
できます)。strftime()
それでもタイムスタンプに含まれていない数値の形式を再指定する場合は、1年前からこれまでのように、特定の範囲内の数値形式のみを再指定して誤検出のリスクを減らすことができます。
perl -MPOSIX -pe '
BEGIN{$start = ($end = time) - 366*24*60*60}
s{(?<!\d)([1-9]\d{9})(\d{3})(?!\d)}{
$start <= $1 && $1 <= $end ?
strftime "%FT%T.$2%z",localtime$1 :
$&
}ge' < your-file