我有这样的文件:
啊啊啊
bbb
ccc
ddd
eee
我想在 BASH 中做一个脚本,它可以随机取这个文本文件的行,并将它作为变量或其他东西返回给我。
我听说可以用一些 AWK 来完成。有任何想法吗?
更新:我现在使用这个:
shuf -n 1 文本.txt
谢谢大家的帮助!
我使用这样的脚本从我的 singature-quotes 文件中生成随机行:
#!/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"
我会将 sed 与 p 参数一起使用...
sed -n '43p'
其中 43 可能是一个变量...
我对 awk 不太了解,但我想你可以做几乎同样的事情(但是我不知道 awk 是否已经完成......)
这是一种 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"