Come fare uno script in bash che prende testo casuale da file? [duplicare]
Domanda
Questa domanda ha già una risposta qui:
Ho file, come:
AAA
bbb
ccc
ddd
eee
E io voglio fare uno script in bash che può prende la linea casuale di questo file di testo, e tornare a me come variabile o qualcosa del genere.
Ho sentito che può essere fatto con un po 'di AWK. Tutte le idee?
UPDATE: Ora con questo:
shuf -n 1 text.txt
Grazie a tutti per l'aiuto!
Soluzione
Si prega di consultare: lettura casuale linea
Altri suggerimenti
ho usato uno script come questo per generare una riga a caso dal mio file di firma virgolette:
#!/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"
Vorrei usare sed con argomento p ...
sed -n '43p'
dove 43 potrebbe essere una variabile ...
Non so molto di awk, ma credo che si potrebbe fare quasi la stessa cosa (ma non so se awk è Turing completo ...)
ecco un modo bash, w / o eventuali strumenti esterni
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"