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!

È stato utile?

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"
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top