פורסם 2012 בדצמבר 1212 שנים אני צריך לקלוט מחרוזת של 3 קבצים לדוגמה:F1 F2 F3כל אחד מכיל מספר שורות, צריך לחבר את הסכום של מספר השורות של הקבצים.מה שעשיתי עד עכשיו זה ככה:read xecho $x >|tempfor x in $(cat temp)dowc -l < $xdone >| temp2[code/]עכשיו קובץ temp2 מכיל רשימה של מספר שורות בכל קובץ ככה:121410למישהו יש רעיון איך אני מחבר את המספרים ומציג על המסך את התוצאה?תודה.
פורסם 2012 בדצמבר 1212 שנים מתמטיקה בקונסול מתבצעת אל ידיי let למשל כך :let x = $y+$zכך שאם יש לך את המספרים ב 1 מה tempים אתה יכול לעשות letאבל יש דרך יותר פשוטה : אם אה משתמש אם לולאה כדיי לספור שורות (cat) אז פשוט תמשיך אם אותו משתנה לקבצים הבאים ואל תאפס אותו כל הזמן
פורסם 2012 בדצמבר 1312 שנים מחבר תודה על המידע, עשיתי את זה בדרך הבאה:read xecho $x >|tempfor x in $(cat temp)dowc -l < $xdone >| temp2y=0for x in $(cat temp2)do y=$[$y+$x]doneecho $yrm temp temp2עכשיו אני צריך עזרה בשאלה נוספת:יש לי קובץ שמכיל את המספרים הבאים:2 8 3 710040 20 360 70אני צריך להשתמש בלולאות for while בכדי לחבר כל שורה כך שהפלט יהיה כך:2010063130נסיתי כל מיני אפשרויות אבל לא הצלחתי...יש טיפים ?
פורסם 2012 בדצמבר 1312 שנים מותר לך להשתמש בwc בתרגיל או שאתה חייב לממש רק עם sh?מה עם bash extensions?
פורסם 2012 בדצמבר 1312 שנים פתרון ללא wc או cut. אני לא נותן את הפתרון אלא הדגמה, תעבור עליה :יש כאן את כל הפקודות שתצתרך כדיי לפתור את הבעיה[ash@viridian ~]$ echo 7 3 8 2''100''3 20 40''70 60 |cat >infile[ash@viridian ~]$ cat infile 7 3 8 21003 20 4070 60[ash@viridian ~]$ for i in `cat infile` ; do echo x$i ; donex7x3x8x2x100x3x20x40x70x60[ash@viridian ~]$ echo every challenge along the wayevery challenge along the way[ash@viridian ~]$ echo every challenge along the way |sed -e 's/ /_/g'every_challenge_along_the_way[ash@viridian ~]$ echo every challenge along the way |sed -e 's/challenge/adventure/g'every adventure along the way[ash@viridian ~]$ for i in `cat infile |sed -e 's/ /_/g'` ; do echo x$i ; donex7_3_8_2x100x3_20_40x70_60[ash@viridian ~]$ let sum=0[ash@viridian ~]$ for i in `cat infile` ; do let sum=$sum+$i ; done[ash@viridian ~]$ echo $sum313
פורסם 2012 בדצמבר 1312 שנים מחבר תודה על ההדגמה רק שיש פה הרבה פקודות שלא למדתי עדיין וכנראה נדרש ממני לעשות את זה בדרך מסובכת יותר,לא מכיר את let sed וצורת כתיבת הלולאה...
פורסם 2012 בדצמבר 1312 שנים מחבר את תחילת הדרך, איך אני לוקח כל מספר בשורה מחבר אותו עם השני ונותן תוצאה...אני ארשום את זה אחר כך בהתאם לתרגיל
פורסם 2012 בדצמבר 1312 שנים הבעיה ההתחלתית היא ש for מקבל כל מספר בפני עצמו, בלי התייחסות לשורות. על ידיי sed ניתן לאחד כל שורה ל string שנראה כמו7_3_8_2ועכשו נניח שהרצנו forעל ה string-ים האלה[ash@viridian ~]$ echo 7_3_8_2 |cat >infile[ash@viridian ~]$ cat infile7_3_8_2[ash@viridian ~]$ for i in `cat infile` ; do echo x$i ; donex7_3_8_2[ash@viridian ~]$ for i in `cat infile |sed -e 's/_/ /g'` ; do echo x$i ; donex7x3x8x2[ash@viridian ~]$ let s=0[ash@viridian ~]$ for i in `cat infile |sed -e 's/_/ /g'` ; do let s=$s+$i ; done[ash@viridian ~]$ echo $s20
פורסם 2012 בדצמבר 1312 שנים מחבר עשיתי את זה וזה לא עבד כמו שצריך...for i in `cat F6`doecho x$idonefor i in `cat F6 |sed -e 's/_/ /g'`doecho x$idonelet s=0for i in `cat F6 |sed -e 's/_/ /g'`dolet s=$s+$idoneecho $sהפלט חייב להיות בדיוק ככה:2010063130זה מה שיוצא לי:F6x2x8x3x7x100x40x20x3x60x70x2x8x3x7x100x40x20x3x60x70313
פורסם 2012 בדצמבר 1312 שנים הבאתי הדגמה, לא את התשובה. שים לב שבהדגמה השניה התוכן של infile היה 7_3_8_2אתה צריך לולאת for חיצונית (שתכלול את הלולאה שיש) כדיי לעבור על כל שורה בקובץ
פורסם 2012 בדצמבר 1312 שנים מחבר הבעיה שיש פה פקודות שאני לא מכיר... אז קשה לי להבין מה בדיוק כל שורה עושה...
פורסם 2012 בדצמבר 1312 שנים מחבר עכשיו מישהו שלח לי את הדרך:וזה מה שמבקשים מאיתנו לעשות...read filetr -s " " < $file >| tempecho -n "" >| temp2while read xdob=0for a in $xdob=$[$b+$a]doneecho $b >> temp2done < tempcat temp2rm temp temp2
פורסם 2012 בדצמבר 1312 שנים הפקודה sed מאפשרת לעבד טקסט בשורת הפקודה. במקרה הזה אני משתמש איתה כדיי לבצע search and replace[ash@viridian ~]$ echo every challenge along the wayevery challenge along the way[ash@viridian ~]$ echo every challenge along the way |sed -e 's/challenge/adventure/g'every adventure along the wayהפקודה let משמשת להגדרת משתנים ופעולות מתמטיות[ash@viridian ~]$ let s=0[ash@viridian ~]$ echo $s0[ash@viridian ~]$ let s=$s+6[ash@viridian ~]$ echo $s6[ash@viridian ~]$ let s=$s+3[ash@viridian ~]$ echo $s9[ash@viridian ~]$ let x=4[ash@viridian ~]$ let y=$s-$x[ash@viridian ~]$ echo $y5
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.