הסרת דמויות מהמחרוזת בבש

Removing Characters From String Bash



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

המאמר עוסק כיצד לבצע את הפעולות הבאות:







  • הסר תו מהמחרוזת באמצעות sed
  • הסר תו מהמחרוזת באמצעות awk
  • הסר תו מהמחרוזת באמצעות חיתוך
  • הסר תו מהמחרוזת באמצעות tr

הפקודות המוצגות במאמר זה בוצעו ב- Ubuntu 20.04 Focal Fossa. ניתן לבצע אותן פקודות גם בהפצות לינוקס אחרות שיש להן את הכלים הנ'ל. נשתמש ביישום ברירת המחדל של מסוף להפעלת הפקודות. תוכל לגשת ליישום מסוף באמצעות קיצור המקשים Ctrl+Alt+T.



הסר תווים מהמחרוזת באמצעות sed

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



לצורכי הדגמה, נשתמש במחרוזת לדוגמא ולאחר מכן נצמיד אותה לפקודת sed.





הסר תו ספציפי מהמחרוזת

באמצעות sed, תוכל להסיר תו ספציפי ממחרוזת. לדוגמה, כדי להסיר h מהמחרוזת שלום מה שלומך? הפקודה תהיה:

$זרק 'שלום מה שלומך?' | sed s/h // '

פעולה זו תסיר רק את המופע הראשון של 'h' במחרוזת.
הסר תו ספציפי מהמחרוזת 1
כדי להסיר את כל המופעים של 'h' מהמחרוזת, השתמש בפקודה הבאה:



$זרק 'שלום מה שלומך?' | sed s/h // g '

איפה ז מייצג גלובלי. זה יסיר את כל המופעים של 'h' במחרוזת.
הסר תו ספציפי מהמחרוזת 2

הסר את התו הראשון מהמחרוזת

כדי להסיר את התו הראשון מהמחרוזת שלום מה שלומך? הפקודה תהיה:

$זרק 'שלום מה שלומך?' | sed 's /^.//' קוֹבֶץ

כאשר (.) תואם בדיוק תו יחיד ו- (^) תואם כל תו בתחילת המחרוזת.
הסר את התו הראשון מהמחרוזת

הסר את התו האחרון מהמחרוזת

כדי להסיר את התו האחרון מהמחרוזת שלום מה שלומך? הפקודה תהיה:

$זרק 'שלום מה שלומך?' | sed 's /.$//'

איפה ( . ) תואם בדיוק תו יחיד ו ($) תואם כל תו בסוף המחרוזת.
הסר את התו האחרון מהמחרוזת

הסר את התו הראשון והאחרון מהמחרוזת

כדי להסיר את התו הראשון והאחרון מהמחרוזת שלום מה שלומך? הפקודה תהיה:

$זרק 'שלום מה שלומך?' | sed 's /^.//; s /.$//'

הסר את התו הראשון והאחרון מהמחרוזת

הסר תווים מהמחרוזת באמצעות awk

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

למטרות הדגמה, נשתמש במחרוזת לדוגמא ולאחר מכן נצנף אותה לפקודת awk.

הסר את התו הראשון ממחרוזת

כדי להסיר את התו הראשון מהמחרוזת שלום מה שלומך? הפקודה תהיה:

$זרק 'שלום מה שלומך?' | awk '{subprint print ($ 0, 2)}'

כאשר ($ 0) היא מחרוזת המטרה כולה ו- (2) היא מיקום ההתחלה של התו. הפקודה למעלה מסירה את התו הראשון, 'h', מספר התו '1' ומחזירה את מחרוזת היעד המתחילה בתו השני, 'e'.
הסר את התו הראשון ממחרוזת

הסר את שתי התווים הראשונים מהמחרוזת

תוכל גם להסיר מספר מסוים של תווים מתחילת המחרוזת. לדוגמה, כדי להסיר את שתי התווים הראשונים מהמחרוזת שלום מה שלומך? הפקודה תהיה:

$זרק 'שלום מה שלומך?' | awk '{subprint print ($ 0, 3)}'

הפקודה לעיל תסיר את שתי התווים הראשונים, 'הוא' או מספרי תווים '1 ו -2', ומחזירה את מחרוזת המטרה המתחילה במספר התווים '3' או 'l'.
הסר את שתי התווים הראשונים מהמחרוזת

הסר את התו האחרון מהמחרוזת

כדי להסיר את הדמות האחרונה מ שלום מה שלומך? הפקודה תהיה:

$זרק 'שלום מה שלומך?' | awk '{subprint print ($ 0, 1, length ($ 0) -1)}'

איפה אורך ($ 0) -1 פירושו ניכוי ' 1 'מתוך אורך הדמות הכולל.

הפקודה לעיל תדפיס את המחרוזת המתחילה במספר תו ' 1 ' עד ל אורך ($ 0) -1 כדי להסיר את הדמות האחרונה.

יש ' 19 'תווים (כולל רווחים) במחרוזת לעיל. הפקודה תפעל על ידי הדפסת כל התווים, החל בתו ' 1 'ועד לדמות' 18 , 'תוך הסרת הדמות האחרונה' 19 . '

rmv מחרוזת frm האחרונה

הסר את שתי התווים האחרונים מהמחרוזת

כדי להסיר את שתי התווים האחרונים מ שלום מה שלומך? הפקודה תהיה:

$זרק 'שלום מה שלומך?' | awk '{sub print print ($ 0, 1, length ($ 0) -2)}'

איפה אורך ($ 0) -2 פירושו ניכוי ' 2 'מתוך אורך הדמות הכולל.

הפקודה לעיל תדפיס את המחרוזת, שתתחיל במספר תו ' 1 'ועד מספר התו' אורך ($ 0) -2 , 'כדי להסיר את שתי התווים האחרונים במחרוזת.
הסר את שתי התווים האחרונים מהמחרוזת

הסר את התווים הראשונים והאחרונים מהמחרוזת

כדי להסיר את התווים הראשונים והאחרונים מהמחרוזת שלום מה שלומך? הפקודה תהיה:

$זרק 'שלום מה שלומך?' | awk '{subs print ($ 0, 2, length ($ 0) - 2)}'

איפה אורך ($ 0) -2 פירושו ניכוי ' 2 'מתוך אורך הדמות הכולל.

הפקודה לעיל תדפיס את המחרוזת, שתתחיל במספר תו ' 2 'עד מספר תו' אורך ($ 0) -2 , 'כדי להסיר את התו הראשון והאחרון.

הסר את התווים הראשונים והאחרונים מהמחרוזת

הסר תו מהמחרוזת בעזרת חיתוך

Cut הוא כלי שורת פקודה המשמש בדרך כלל לחלץ חלק טקסט ממחרוזת או מקובץ ולהדפיס את התוצאה לפלט רגיל. תוכל גם להשתמש בפקודה זו להסרת תווים ממחרוזת.

לצורכי הדגמה, נשתמש במחרוזת לדוגמא ולאחר מכן נצמיד אותה לפקודת החיתוך.

הסר את התו הראשון מהמחרוזת

כדי להסיר את התו הראשון מהמחרוזת, שלום מה שלומך? הפקודה תהיה:

$זרק 'שלום מה שלומך?' | גזירה 2-

פקודה זו תדפיס את המחרוזת, המתחילה בתו השני, תוך הסרת התו הראשון.
rmv לחתוך -c

הסר את ארבע התווים הראשונים מהמחרוזת

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

$זרק 'שלום מה שלומך?' | גזירה 5-

פקודה זו תדפיס את המחרוזת, החל מהתו החמישי, תוך הסרת ארבעת התווים הראשונים.
הסר את ארבע התווים הראשונים מהמחרוזת

מחרוזת הדפסה בין תווים 2 לחמישית

להדפסת המחרוזת שלום מה שלומך? בין הדמויות השנייה לחמישית , הפקודה תהיה:

$זרק 'שלום מה שלומך?' | גזירה 2-5

פקודה זו תדפיס את המחרוזת, החל מהתו השני ועד התו החמישי, תוך הסרת תווי ההתחלה והסיום הנותרים.
rmv 2 ו -5 c2

הסר את התו האחרון מהמחרוזת

כדי להסיר את התו האחרון מהמחרוזת שלום מה שלומך? להשתמש ב גזירה פקודה עם לְהַאִיץ , כדלהלן:

$זרק 'שלום מה שלומך?' | לְהַאִיץ | גזירה -c2- | לְהַאִיץ

פקודה זו פועלת על ידי תחילת היפוך המחרוזת, לאחר מכן חיתוך התו הראשון, ולבסוף היפוךו מחדש כדי לתת לך את הפלט הרצוי.
02 הסר את הדמות האחרונה מהמחרוזת

הסר את ארבעת התווים האחרונים מהמחרוזת

כדי להסיר את ארבעת התווים האחרונים מהשורה שלום מה שלומך? הפקודה תהיה:

$זרק 'שלום מה שלומך?' | לְהַאִיץ | גזירה -c5- | לְהַאִיץ

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

הסר את התווים הראשונים והאחרונים מהמחרוזת

להסרת התווים הראשונים והאחרונים מהמחרוזת שלום מה שלומך? להשתמש ב גזירה פקודה עם לְהַאִיץ , כדלהלן:

$זרק 'שלום עולם!' | גזירה -c2- | לְהַאִיץ | גזירה -c2- |לְהַאִיץ

פקודה זו פועלת על ידי חיתוך התו הראשון, לאחר מכן היפוך המחרוזת וחיתוך התו הראשון ולאחר מכן הפיכתו שוב כדי לתת לך את הפלט הרצוי.
rmv הראשון והאחרון

הסר תו מהמחרוזת באמצעות tr

הפקודה tr (קיצור של תרגום) משמשת לתרגום, סחיטה ומחיקה של תווים ממחרוזת. תוכל גם להשתמש ב- tr כדי להסיר תווים ממחרוזת.

למטרות הדגמה, נשתמש במחרוזת לדוגמא ולאחר מכן נצמיד אותה לפקודת tr.

הסר את כל מופעי הדמות

באמצעות הפקודה tr, תוכל להסיר את כל המופעים של אותיות קטנות או רישיות מהמחרוזת. לדוגמה, כדי להסיר את כל המופעים של התו האות 'h' מהמחרוזת, הפקודה תהיה:

$זרק 'שלום מה שלומך?' | NS -dח

הסר את כל המופעים 01

באופן דומה, כדי להסיר את כל המופעים של התו האות 'H' מהמחרוזת, הפקודה תהיה:

$זרק 'שלום מה שלומך?' | NS -dח

תוכל גם להשתמש ברצפים מפורשים להסרת אותיות קטנות או רישיות:

$זרק 'שלום מה שלומך?'| NS -d [:עֶלִיוֹן:]

מופעים נמוכים יותר

$זרק 'שלום מה שלומך?'| NS -d [:נמוך יותר:]

מופעים עליונים

הסר את כל המופעים של אותיות קטנות וקטנות

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

$זרק 'שלום מה שלומך?' | NS -d'ח'

קורה עליון ותחתון

הסר את כל מופעי הדמויות בטווח ספציפי

כדי להסיר את כל מופעי התווים ממחרוזת בטווח הספציפי 'd-h', הפקודה תהיה:

$זרק 'שלום מה שלומך?' | NS -d 'd-h'

פקודה זו תסיר את כל התווים בטווח 'd-h' (d, e, f, g, h) במחרוזת.
מתרחש טווח ספציפי

סיכום

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