Bash:
הסרת מרכאות ממחרוזת
איך לעשות:
ב-Bash ישנן דרכים מספר להסיר מרכאות ממחרוזות. הנה כמה דוגמאות מהירות:
#!/bin/bash
# שימוש בהחלפת משתנים להסרת גם מרכאות יחידות וגם כפולות
STRING="\"שלום, עולם!\""
echo ${STRING//\"}
# שימוש ב-`tr` למחיקת מרכאות
STRING="'שלום, עולם!'"
echo $STRING | tr -d "\'"
# שימוש ב-`sed` למחיקת מרכאות
STRING="\"שלום, עולם!\""
echo $STRING | sed 's/"//g'
פלט לדוגמא:
שלום, עולם!
שלום, עולם!
שלום, עולם!
צלילה עמוקה
שם לפנים, פקודות יוניקס כמו tr
ו-sed
היו הכלים העיקריים לעיבוד טקסט. הם עדיין בשימוש כיום בשל גמישותם ועוצמתם בטיפול בהמרות טקסט כמו הסרת מרכאות. הם נחוץ בכל ערכת כלים של מתכנתי shell.
ב-Bash עצמו התפתח והחלפת משתנים מוסיפה עוד שכבה של פשטות לשינויי מחרוזות בקנה מידה קטן. היא חוסכת לך את הצורך להפנות לבינארים חיצוניים, דבר ההופך את הסקריפטים שלך ליעילים יותר.
למרות ש-tr
נהדר למחיקת תווים, הוא לא מתמודד עם דפוסים מורכבים יותר. sed
, לעומת זאת, משתמש בביטויים רגולריים, כך שלפעמים הוא יתר על המידה ועשוי להיות איטי יותר לפעולות פשוטות.
הבחירה בין השיטות הללו תלויה במקרה הספציפי שלך. אם אתה צריך להסיר מגוון של מרכאות ואתה כבר נמצא בהקשר של סקריפט Bash, שימוש בהחלפת משתנים היא ברירת המחדל בגלל פשטותה. אבל אם אתה מעביר זרמי טקסט או נתונים ברב שורות, tr
ו-sed
הם חבריך הטובים ביותר.
ראה גם:
- מדריך ה-GNU Bash, במיוחד הפרקים על הרחבת פרמטרים והרחבת פרמטרי Shell: https://www.gnu.org/software/bash/manual/
- מדריך הפקודה
tr
: https://www.gnu.org/software/coreutils/manual/html_node/tr-invocation.html - סקירת עורך הזרם
sed
: https://www.gnu.org/software/sed/manual/sed.html