AAA
BBB
CCC
DDD
EEE
我想在BASH中创建一个脚本,该脚本可以随机获取此文本文件,并将其作为变量或其他内容返回给我。
我听说可以用一些AWK完成。 有什么想法吗?
更新我现在使用此:
shuf -n 1 text.txt
谢谢大家的帮助!
答案 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"