كيفية القيام برامج نصية في Bash والتي تتيح نص عشوائي من الملف؟ [مكرر

StackOverflow https://stackoverflow.com/questions/910523

  •  06-09-2019
  •  | 
  •  

سؤال

هذا السؤال لديه بالفعل إجابة هنا:

لدي ملف مثل:

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"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top