רצפים ופורמטים עם
רמת קושי: #beginners
כפי שאנו מכירים באש מאפשרת ליצור רצפים של מספרים על ידי שימוש ב Brace expansion (הביטוי שמתאר את הפעולה הבאה
נעים להכיר
פקודה חביבה נוספת שמאפשרת ליצור רצפים היא seq, השימוש בה קל וכל שצריך הוא פשוט להעביר ערכים של התחלה וסוף ומקבלים רצף
יאפ, הפקודה מאפשרת ליצור רצפים בדילוג
seq
רמת קושי: #beginners
כפי שאנו מכירים באש מאפשרת ליצור רצפים של מספרים על ידי שימוש ב Brace expansion (הביטוי שמתאר את הפעולה הבאה
{10..1}
) וזה עובד יפה מאוד כשמשתמשים בזה עם מספריםcat myscript.sh
for i in {1..10}; do
echo $i
done
$ bash myscript.sh
1
2
3
...
הבעיות מתחילות כשרוצים שהקוד יהיה קצת יותר דינמי ומחליטים במקום להכניס מספרים בצורה ישירה להכניס משתנים שיכילו את ההתחלה והסוף, אם כן הכירו את המשתנים שלנו start וend$ cat myscript.sh
start=1
end=10
for i in {$start..$end}; do
echo $i
done
$ bash myscript.sh
{1..10}
הופההה בעיה, במקום שבאש תפרש את הערכים ששמנו בסוגריים המסולסלות כביטוי שיש לחולל, באש מתייחסת לביטוי כמחרוזת ולכן משתנה i פשוט מדפיס את המחרוזת.נעים להכיר
seq
פקודה חביבה נוספת שמאפשרת ליצור רצפים היא seq, השימוש בה קל וכל שצריך הוא פשוט להעביר ערכים של התחלה וסוף ומקבלים רצף
$ cat myscript.sh
start=1
end=10
for i in $(seq $start $end); do
echo $i
done
$ bash myscript.sh
1
2
3
...
נשמע אחלה מעולה, אפשר מזה עוד?יאפ, הפקודה מאפשרת ליצור רצפים בדילוג
$ seq 0 2 20
0
2
4
6
ודבר נחמד עוד יותר שהיא מאפשרת זה למלא אפסים לפני מספרים קטנים, וכך חסכנו את הצורך להשתמש ב printf
כדי לפרמט רצף כרונולוגי$ seq -w 100
001
002
003
...
010
011
012
...
099
100
#seq
#brace_expansion
@bash_tips
Bash Tips
רצפים ופורמטים עם seq רמת קושי: #beginners כפי שאנו מכירים באש מאפשרת ליצור רצפים של מספרים על ידי שימוש ב Brace expansion (הביטוי שמתאר את הפעולה הבאה {10..1} ) וזה עובד יפה מאוד כשמשתמשים בזה עם מספרים cat myscript.sh for i in {1..10}; do echo $i…
איחוד רצפים seq
רמת קושי: #beginners
פקודת
תכונה שימושית נוספת שהפקודה מכילה היא האפשרות לקבוע איזה תו יפריד בין כל תו/מילה/מספר שהיא יוצרת
דוגמה שימושית בתכונה זו היא יצירת מחרוזת לregex שבוחרת שנים בין 2016 ל 2021 מבלי להיכנס לסינטקס הלא ברור של regex
#seq
#regex
@bash_tips
רמת קושי: #beginners
פקודת
seq
עליה דיברנו בעבר מאפשרת ליצור רצף של תוויםתכונה שימושית נוספת שהפקודה מכילה היא האפשרות לקבוע איזה תו יפריד בין כל תו/מילה/מספר שהיא יוצרת
דוגמה שימושית בתכונה זו היא יצירת מחרוזת לregex שבוחרת שנים בין 2016 ל 2021 מבלי להיכנס לסינטקס הלא ברור של regex
$ seq -s "|" 2016 2021
2016|2017|2018|2019|2020|2021
#seq
#regex
@bash_tips