GNU/Linux >> Linux の 問題 >  >> Linux

年間隔を指定して、ランダムな日付のシーケンスをどのように生成できますか?

ここで必要なのは、年の範囲(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

Linux
  1. Linuxで開くファイルの数の制限を増やす方法

  2. pandomのインストール方法:Linux用の真の乱数ジェネレーター

  3. / dev/randomを使用してLinuxでランダムパスワードを生成する方法

  1. 特定のディレクトリ内のファイルとサブディレクトリの数をカウントする方法

  2. 特定の文字列を含むファイルの数は?

  3. Linux:特定のディレクトリでコマンドを実行する方法

  1. Bashprintf-変数をBashで印刷する方法

  2. テキストファイル内の単語の出現をカウントする方法

  3. アセンブリNASMで数値を出力するには?