[BASH] Génération nombre aléatoire
Résolu
patrice86
Messages postés
1380
Date d'inscription
Statut
Membre
Dernière intervention
-
patrice86 Messages postés 1380 Date d'inscription Statut Membre Dernière intervention -
patrice86 Messages postés 1380 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un script bash :
Je comprends bien toutes les lignes mais impossible de comprendre le ARGC-=2 de l'avant dernière ligne.
Avez-vous une idée ? Merci.
Google est ton ami :)
J'ai un script bash :
#/bin/bash
if [ $# -ne 1 ]; then
echo "error: usage $0 " 1>&2
echo "returns an average line of the input file" 1>&2
exit 1
fi
input=$1; shift
size=`wc -l $input | awk '{print $1}'`
TIME=`date +%s`
awk 'BEGIN{srand(ARGV[3]); line=int(rand() * (ARGV[2])) + 1;ARGC-=2}NR==line{print}' $input $size $$
Je comprends bien toutes les lignes mais impossible de comprendre le ARGC-=2 de l'avant dernière ligne.
Avez-vous une idée ? Merci.
Google est ton ami :)
A voir également:
- [BASH] Génération nombre aléatoire
- Nombre de jours entre deux dates excel - Guide
- Nombre facile - Télécharger - Outils professionnels
- Generation ryzen - Guide
- Bingo bash - Télécharger - Divers Jeux
- Ascii nombre de caractères - Guide
4 réponses
non, sans le -2, awk va traiter $size et $$ comme des noms de fichiers à lire
il faudrait plutot passer par des variables
il faudrait plutot passer par des variables
awk -v v1=$size -v v2=$$ 'BEGIN{srand(v2); line=int(rand() * (v1)) + 1}NR==line{print}' $input
hello
ARGC est le nombre d'arguments passés à awk (3 : $input $size $$)
en le décrementant de 2, on ne garde que $input, les 2 autres ayant été traités par srand et rand
ARGC est le nombre d'arguments passés à awk (3 : $input $size $$)
en le décrementant de 2, on ne garde que $input, les 2 autres ayant été traités par srand et rand