GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo podría generarse una secuencia de fechas aleatorias, dado el intervalo de años?

Lo que se necesita aquí es un comando que genere seis fechas dado un rango de años (1987 a 2017). Por ejemplo:

12/10/1987
30/04/1998
22/02/2014
17/08/2017
19/07/2011
14/05/2004

Cómo podría hacerse, con sed , gawk , etc?

Respuesta aceptada:

Puede convertir el problema en generar un número aleatorio entre un número que representa la primera fecha posible y un número que representa la última fecha posible (en realidad, la que sigue a la última posible), en formato de época de Unix. Todo lo demás se maneja mediante conversiones de fecha estándar. gawk tiene una mejor resolución de números aleatorios que bash (flotante vs entero de 15 bits), así que usaré gawk . Tenga en cuenta que rand() resultado N es un flotante tal que 0 <=N <1, por eso el límite superior se incrementa por debajo, es un límite que no se puede rodar. Hay un tercer parámetro opcional para el número de resultados.

#!/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)
    }
}   

Por ejemplo:

./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. Cómo aumentar el número de límites de archivos abiertos en Linux

  2. Cómo contar la cantidad de archivos y subdirectorios dentro de un directorio dado

  3. Cómo instalar pandom:un verdadero generador de números aleatorios para Linux

  4. Cómo generar una contraseña aleatoria en Linux usando /dev/random

  5. ¿Número de archivos que contienen una cadena determinada?

Cómo verificar el historial de comandos de Linux por fechas

Cómo comprobar el número de versión y el nombre en clave de Linux Mint

Cómo hacer ping a un número de puerto en Linux

Cómo hacer ping a un número de puerto específico

¿Cómo hacer un diagrama gráfico de una secuencia de números a partir de la entrada estándar?

Cómo:Introducción a la Programación – Programación Orientada a Objetos