Cómo hacer un script en bash que tiene el texto al azar de archivo? [duplicar]
Pregunta
Esta pregunta ya tiene una respuesta aquí:
Tengo archivo como:
AAA
bbb
ccc
ddd
eee
Y yo quiero hacer un script en bash que puede toma aleatoria de línea de este archivo de texto, y devolverlo a mí como variable o algo.
Me han dicho que se puede hacer con un poco de AWK. ¿Alguna idea?
ACTUALIZACIÓN: ahora utilizando la siguiente:
shuf -n 1 text.txt
Gracias a todos por la ayuda!
Solución
Por favor, consulte: leer al azar línea
Otros consejos
He utilizado un script como el siguiente para generar una línea azar de mi archivo de firma comillas:
#!/bin/bash
QUOTES_FILE=$HOME/.quotes/quotes.txt
numLines=`wc -l $QUOTES_FILE | cut -d" " -f 1`
random=`date +%N`
selectedLineNumber=$(($random - $($random/$numLines) * $numLines + 1))
selectedLine=`head -n $selectedLineNumber $QUOTES_FILE | tail -n 1`
echo -e "$selectedLine"
Me gustaría usar sed con el argumento p ...
sed -n '43p'
43, donde podría ser una variable ...
No sé mucho acerca de awk pero yo supongo que se podría hacer casi lo mismo (aunque no sé si awk es Turing completo ...)
aquí está una manera fiesta, w / o herramientas externas
IFS=$'\n'
set -- $(<"myfile")
len=${#@}
rand=$((RANDOM%len+1))
linenum=0
while read -r myline
do
(( linenum++ ))
case "$linenum" in
$rand) echo "$myline";;
esac
done <"myfile"