עבור לתוכן

שאלה קטנה ב- UNIX (עזרה)

Featured Replies

פורסם

אני צריך עזרה בכתיבה של תוכנית:

המשתמש מכניס 3 מחרוזות\משתנים (שם הקובץ, ושתי מספרים)

באמצעות איזו פקודת גזירת אני יכול לגזור את השורות ה 2-4 מהקובץ שמכיל:

20

14

6

100

3

אני צריך לגזור את שלושת המספרים 2-4 ולחבר בניהם כך שהסכום הכולל יהיה 120.

אשמח לעזרה, תודה.

פורסם

[ash@viridian ~]$ echo 20'
'14'
'6'
'100'
'3 >infile

[ash@viridian ~]$ cat infile
20
14
6
100
3

[ash@viridian ~]$ cat infile |head -n 4
20
14
6
100

[ash@viridian ~]$ cat infile |head -n 4 |tail -n 3
14
6
100

[ash@viridian ~]$ for i in `cat infile` ; do echo i=$i ; done
i=20
i=14
i=6
i=100
i=3

[ash@viridian ~]$ let s=0
[ash@viridian ~]$ let s+=14
[ash@viridian ~]$ let s+=6
[ash@viridian ~]$ let s+=100
[ash@viridian ~]$ echo $s
120

ועכשו, לחבר ביחד

פורסם
  • מחבר

תודה על העזרה אבל אני החסרתי כמה פרטים מהשאלה שכנראה שינו את המטרה:

המשתמש צריך להכניס 3 משתנים:

file name

num1

num2

באמצעות פקודת read

המספרים בעצם צריכים להגיד כך את שורה num1 עד שורה num2 וחבר את סכום המספרים...

השאלה באמצעות פקודת cut איך אני לוקח שלוש שורות ומעביר לקובץ נגיד..

פורסם

במקום 4 ו 3 (שכתבתי בדוגמה), תיקח ערכים כלשהם שבא לך אם read - כך :

[ash@why ~]$ echo enter 1st line ; read x ; echo enter last line ; read y
enter 1st line
2
enter last line
4

[ash@why ~]$ echo $x ; echo $y
2
4

עכשו השימוש הנכון אם cut הוא אם הגדרת delimiter, אבל לא מצאתי אפשרות (חוץ מההאק אם ה ' ') להגדיר את ה delimiter כ שורה חדשה. \n לא עובד

לכן במקום cut ניתן להשתמש אם head ו tail. ב head אנחנו לוקחים מההחלה עד שורה y, וב tail אנחנו לוקחים במה שנשאר כמה שהוא שורות מהסוף. "כמה שהוא" זה y-x+1 (ניתן לחשב את זה על ידי let)

וההמשך כמו שעשינו מקודם

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים