Bash דוגמאות מחרוזת מפוצלת

Bash Split String Examples



עלינו לפצל את נתוני המחרוזת למטרות שונות בתכנות. לשפות תכנות רבות יש פונקציה מובנית בשם 'פיצול' לחלוקת כל נתוני מחרוזת למספר חלקים. אך אין פונקציה מובנית ב- bash לחלוקת המחרוזת. בדרך כלל משתמשים במפריד בודד או מרובה כדי לפצל נתוני מחרוזות. כיצד ניתן לפצל את המחרוזת ב- bash מוצג במדריך זה באמצעות דוגמאות שונות.








שימוש במשתנה $ IFS

משתנה הקליפה המיוחד $ IFS משמש ב- bash לפצל מחרוזת למילים. משתנה $ IFS נקרא מפריד שדות פנימי (IFS) המשמש להקצאת המפריד הספציפי לחלוקת המחרוזת. גבולות המילים מזוהים ב- bash על ידי $ IFS. רווח לבן הוא ערך המפריד המוגדר כברירת מחדל עבור משתנה זה. כל ערך אחר כמו ' t', ' n', '-' וכו 'יכול לשמש כמפריד. לאחר הקצאת הערך למשתנה $ IFS, ניתן לקרוא את ערך המחרוזת על ידי שתי אפשרויות. אלה הם '-r' ו- '-a'. האפשרות, '-r' משמשת לקריאת קו נטוי () כתו במקום תו בריחה ואפשרות '-a' משמשת לאחסון המילים המפוצלות במשתנה מערך. ניתן לפצל את המחרוזת מבלי להשתמש במשתנה $ IFS ב- bash. דוגמאות הבאות מוצגות דרכים שונות לפיצול נתוני מחרוזת (עם $ IFS או ללא $ IFS).



דוגמה 1: פיצול מחרוזת המבוסס על

ערך המחרוזת מחולק ברווח לבן כברירת מחדל. צור קובץ בשם 'split1.sh' והוסף את הקוד הבא. כאן, משתנה טקסט $ משמש להקצאת ערך מחרוזת. משתנה הקליפה, $ IFS משמש להקצאת התו שישמש לחלוקת נתוני המחרוזת. שטח משמש בתסריט זה כמפריד. האפשרות '-a' משמשת עם פקודת קריאה לאחסון הנתונים המפוצלים במשתנה מערך בשם $ strarr. לולאת 'עבור' משמשת לקריאת כל רכיב במערך, $ strarr.



split1.sh





#!/bin/bash

#הגדר את ערך המחרוזת
טֶקסט='ברוכים הבאים ל- LinuxHint'

# הגדר מרחב כמפריד
IFS=''

#קרא את המילים המפוצלות למערך המבוסס על תוחם שטח
לקרוא מוזר<<< '$ טקסט'

#ספרו את כל המילים
זרק 'יש$ {#strarr [*]}מילים בטקסט. '

# הדפס כל ערך של המערך באמצעות הלולאה
לשעותב '$ {strarr [@]}';
לַעֲשׂוֹת
printf 'שעות $ n'
בוצע

תְפוּקָה:

הפעל את התסריט.



$לַחֲבוֹטsplit1.sh

הפלט הבא יופיע לאחר הפעלת התסריט.

דוגמה -2: פיצול מחרוזת המבוססת על תו מסוים

כל תו ספציפי יכול לשמש כמפריד לחלוקת ערך המחרוזת. צור קובץ בשם split2.sh והוסף את הקוד הבא. כאן, שם הספר, שם המחבר וערך המחיר נלקחים על ידי הוספת פסיק (,) כמחרוזת קלט. לאחר מכן, ערך המחרוזת מפוצל ומאוחסן במערך המבוסס על ערך משתנה הקליפה, $ IFS. כל ערך של רכיבי המערך מודפס לפי ערך האינדקס.

split2.sh

#!/bin/bash

#קרא את ערך המחרוזת
זרק 'הזן את שם הספר, שם המחבר ומחיר על ידי הפרדת פסיק. '
לקרואטֶקסט

# הגדר פסיק כמפריד
IFS=','

#קרא את המילים המפוצלות למערך המבוסס על מפריד פסיק
לקרוא מוזר<<< '$ טקסט'

#הדפס את המילים המפוצלות
זרק 'שם הספר:$ {strarr [0]}'
זרק 'שם המחבר:$ {strarr [1]}'
זרק 'מחיר :$ {strarr [2]}'

תְפוּקָה:

הפעל את התסריט.

$לַחֲבוֹטsplit2.sh

הפלט הבא יופיע לאחר הפעלת התסריט.

דוגמה 3: פיצול המחרוזת ללא משתנה $ IFS

דוגמה זו מראה כיצד ניתן לחלק את ערך המחרוזת מבלי להשתמש ב- $ IFS ב- bash. צור קובץ בשם ' split3.sh ' והוסף את הקוד הבא. על פי התסריט, ערך טקסט עם המעי הגס (:) צריך לקחת כקלט לפיצול. כאן, הפקודה 'readarray' עם -d משמשת לפיצול נתוני המחרוזת. האפשרות '-d' משמשת להגדרת תו המפריד בפקודה כמו $ IFS. לאחר מכן, לולאת 'עבור' משמשת להדפסת רכיבי המערך.

split3.sh

#!/bin/bash

#קרא את המחרוזת הראשית
זרק 'הזן את המחרוזת עם נקודתיים (:) לפצל'
לקרואmainstr

#פיצול המחרוזת על בסיס התוחם, ':'
מערך קריאה-d:מוזר<<< '$ mainstr'
printf ' n'

# הדפס כל ערך של המערך באמצעות לולאה
ל (( נ=0; נ< $ {#strarr [*]}; n ++))
לַעֲשׂוֹת
זרק '$ {strarr [n]}'
בוצע

תְפוּקָה:

הפעל את התסריט.

$לַחֲבוֹטsplit3.sh

הפלט הבא יופיע לאחר הפעלת התסריט.

דוגמה -4: פיצול המחרוזת עם תוחם מרובה תווים

ערך המחרוזת מפוצל על ידי מפריד תווים בודד בכל הדוגמאות הקודמות. דוגמה זו מציגה כיצד תוכל לפצל את המחרוזת באמצעות תוחם מרובה תווים. צור קובץ בשם הזמנים מתחלקים 4..sh והוסף את הקוד הבא. כאן, משתנה טקסט $ משמש לאחסון נתוני מחרוזת. משתנה $ delimiter משמש להקצאת נתונים מרובי תווים המשמשים כמפריד בהצהרות הבאות. משתנה $ myarray משמש לאחסון כל נתוני פיצול כאלמנט מערך. לבסוף, כל הנתונים המפוצלים מודפסים באמצעות לולאת 'עבור'.

split4.sh

#!/bin/bash

#הגדר את המחרוזת לפיצול
טֶקסט='למד HTMLlearnPHPlearnMySQLlearnJavascript'

#הגדר תוחם מרובה תווים
תוחם='לִלמוֹד'
#חבר את המפריד עם המחרוזת הראשית
חוּט=$ טקסטמפריד $

#פיצול הטקסט על בסיס התוחם
myarray=()
בזמן [[ מחרוזת $ ]];לַעֲשׂוֹת
myarray+=( '$ {string %% '$ delimiter'*}' )
חוּט=$ {string#*'$ delimiter'}
בוצע

#הדפס את המילים לאחר הפיצול
לערךב $ {myarray [@]}
לַעֲשׂוֹת
זרק -n 'ערך $'
בוצע
printf ' n'

תְפוּקָה:

הפעל את התסריט.

$לַחֲבוֹטsplit4.sh

הפלט הבא יופיע לאחר הפעלת התסריט.

סיכום:

נתוני המחרוזת צריכים להתפצל למטרות תכנות שונות. שיטות שונות לפצל נתוני מחרוזות ב- bash מוצגות במדריך זה. מקווה, לאחר תרגול הדוגמאות לעיל, הקוראים יוכלו לפצל כל נתוני מחרוזת בהתאם לדרישתם.

למידע נוסף צפו הסרטון !