ここで必要なのは、年の範囲(1987年から2017年)で6つの日付を生成するコマンドです。例:
12/10/1987
30/04/1998
22/02/2014
17/08/2017
19/07/2011
14/05/2004
sed
を使用して、どのようにそれを行うことができるか 、gawk
、など?
承認された回答:
問題を、UNIXエポック形式で、最初の可能な日付を表す数値と最後の可能な日付(実際には最後の可能な日付の直後の数値)を表す数値の間にランダムな数値を生成するように変換できます。それ以外はすべて、標準の日付変換によって処理されます。 gawk
bash
よりもランダムな数値の解像度が優れています (フロートと15ビット整数)なので、gawk
を使用します 。 rand()
に注意してください 結果Nは、0 <=N <1のようなフロートです。そのため、上限が下に引き上げられ、ロールできない制限になります。結果の数には、オプションの3番目のパラメーターがあります。
#!/usr/bin/gawk -f
BEGIN {
first=mktime(ARGV[1] " 01 01 00 00 00")
last=mktime(ARGV[2]+1 " 01 01 00 00 00")
if (ARGC == 4) { num=ARGV[3] } else { num=1 }
ARGC=1
range=last-first
srand(sprintf("%d%06d", systime(), PROCINFO["pid"]))
for (i=1; i <= num; i++) {
print strftime("%d/%m/%Y", range*rand()+first)
}
}
例:
./randomdate.gawk 1987 2017 6
26/04/1992
28/04/2010
21/04/2005
17/02/2010
06/10/2016
04/04/1998