0

我有这样的文件:

啊啊啊

bbb

ccc

ddd

eee


我想在 BASH 中做一个脚本,它可以随机取这个文本文件的行,并将它作为变量或其他东西返回给我。

我听说可以用一些 AWK 来完成。有任何想法吗?

更新:我现在使用这个:

shuf -n 1 文本.txt

谢谢大家的帮助!

4

3 回答 3

2

我使用这样的脚本从我的 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"
于 2009-05-26T13:02:15.667 回答
1

我会将 sed 与 p 参数一起使用...

sed -n '43p' 

其中 43 可能是一个变量...

我对 awk 不太了解,但我想你可以做几乎同样的事情(但是我不知道 awk 是否已经完成......)

于 2009-05-26T13:15:48.727 回答
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"
于 2009-12-15T02:25:10.977 回答