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!

¿Fue útil?

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"
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top