如何在BASH中执行从文件中获取随机文本的脚本?

时间:2009-05-26 12:53:38

标签: bash scripting awk sh

我的文件如下:

AAA

BBB

CCC

DDD

EEE


我想在BASH中创建一个脚本,该脚本可以随机获取此文本文件,并将其作为变量或其他内容返回给我。

我听说可以用一些AWK完成。 有什么想法吗?

更新我现在使用此:

shuf -n 1 text.txt

谢谢大家的帮助!

4 个答案:

答案 0 :(得分:3)

请参阅: read random line

答案 1 :(得分:2)

我使用这样的脚本从我的签名引用文件中生成一个随机行:

#!/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"

答案 2 :(得分:1)

我会使用带有p参数的sed ...

sed -n '43p' 

其中43可以是变量......

我不太了解awk,但我想你可以做几乎相同的事情(但是我不知道awk是否完整...)

答案 3 :(得分:1)

这是一种bash方式,没有任何外部工具

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"