0

何百万ものレコードを含む CSV ファイルがあります。フィールドの 1 つ (例: $2) には日付が含まれています。先週からの日付が必要です。

AWK を使用して、現在の日付を過去 7 日間のランダムな日付に置き換えることを考えました。このために、インデックスが 1..7の配列を作成したいと思いました。その値は、過去 7 日間の日付になります (例: 2013-10-08、2013-10-07...)。

特定の日付から日付を計算できる関数はありますか? または、仕事をすることができるいくつかのコード?

ファイルのタイムスタンプは「yyyy-mm-dd hh:mm:ss」です。

更新 - 回答

これがついに私のニーズに合ったものです:

BEGIN { srand() } 
{ 
  split($2, a, "-") 
  t  = mktime(a[1] " " a[2] " " substr(a[3], 1, 2) " 00 00 00") 
  $2 = strftime("%Y-%m-%d %H:%M:%S", t - int(7*rand()+1) * 3600 * 24 + int(3600*24*rand())) 
}
1
4

2 に答える 2

0

あなたはこのようないくつかを行うことができますawk

awk '$2>=from && $2<=to' from="$(date +%b" "%e" "%H:%M:%S -d -7days)" to="$(date +%b" "%e" "%H:%M:%S)" file

date日付を含むフィールドの日付と同じ出力が得られるようにコマンドを調整する必要があり$2ます。次に、これにより、過去 7 日間のデータが得られます

于 2013-10-08T10:52:50.213 に答える