קריאת קבצי טקסט

ƒlameStriker

New member
קריאת קבצי טקסט

שלום, קראתי את המאמר הקצרצר של havlaz בקשר לקבצי טקסט ויש לי שאלה קטנה: במאמר כתוב שהפקודה הזאת:
$read(a.txt,$r(0,$lines(a.txt)))​
תקרא שורה רנדומלית מהקובץ.. מה שלא הבנתי זה למה להשתמש בזה אם אפשר לעשות פשוט:
$read(a.txt)​
וגם כך תיקרא שורה אקראית...? ועוד שאלה קטנה: בקובץ העזרה כתוב שעל ידי הסוויץ' s ניתן לקרוא שורה המתחילה עם טקסט מסוים. נגיד:
$read(help.txt, s, help)​
יחזיר שורה המתחילה עם המילה help. הבעיה שלי היא: זה לא קורא שורה אקראית המתחילה עם הטקסט המבוקש..
אותו דבר לגבי:
$read(help.txt, w, *help*)​
זה אמור להיות ככה? ואם כן, איך אני יכול לקרוא שורה אקראית המתחילה עם מילה מסוימת שאני רוצה? תודה רבה..
 

tzvika pick

New member
אפשר ----->

בהחלט אפשר להשתמש בread$ כדי לקרוא שורה אקראית מהקובץ, רק שאני יכול להגיד לך מניסיוני, שבצורה כזאת השורה שתבחר לקריאה לא תיהיה אקראית לחלוטין. עד כמה שאני זוכר, read$ בוחר בדרך כלל שורות מתחילת הקובץ, ואם יש לך קובץ גדול, הוא פשוט לא יודע להתמודד איתו.. בקיצור, לגבי read$, אפשר להגיד שהוא קורא שורה אקראית רק בגלל שאי אפשר לדעת איזה שורה הוא יקרא
לגבי שתי השאלות האחרות - וואלה, אין לי מושג.. אתה יכול לנסות ולמצוא את מספרי השורות שבהם יש help, ואז לבחור מספר אקראי מבין כל המספרים שבחרת.
 

Mr Boggy Man

New member
דרך אגב

הפקודה /play יותר יעילה ממה שחבלז כתב שם...(לולאות בשביל לקרוא קובץ ושטויות כאלו...)
 

5h4y

New member
אז ככה

$read(file,w,*help*) או $read(file,s,help)​
יחפש בשניהם את ההתאמה הראשונה של המילה, כפי שההלפ אומר. כדי לחפש אחד רנדומאלי אתה יכול לעשות משהו כזה:
//window -h @@ | filter -fw file.txt @@ *help* | echo -a $line(@@,$r(1,$line(@@,0))) | window -c @@​
 
למעלה