كيفية القيام برامج نصية في Bash والتي تتيح نص عشوائي من الملف؟ [مكرر
سؤال
هذا السؤال لديه بالفعل إجابة هنا:
لدي ملف مثل:
aaa.
بي بي بي
CCC.
DDD.
إيييي
وأريد أن أفعل برنامج نصي في BASH الذي يمكن أن يأخذ خط عشوائي من هذا الملف النصي، وإعادته لي بمتغير أو شيء من هذا.
أسمع أنه يمكن القيام به مع بعض awk. أيه أفكار؟
تحديث: أنا الآن أستخدم هذا:
shuf -n 1 text.txt
شكرا لك جميعا للحصول على المساعدة!
المحلول
لطفا أنظر:قراءة خط عشوائي
نصائح أخرى
لقد استخدمت نصا مثل هذا لإنشاء خط عشوائي من ملف اقتباسات الفرز الخاص بي:
#!/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 تورنج كاملة ...)
إليك طريقة باش، مع أي أدوات خارجية
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"
لا تنتمي إلى StackOverflow