אנדרואיד

פקודה TR בלינוקס עם דוגמאות

Davy Jones - Theme

Davy Jones - Theme

תוכן עניינים:

Anonim

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

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

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

כיצד להשתמש tr

התחביר לפקודה tr הוא כדלקמן:

tr OPTION… SET1

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

SET הוא בעצם מחרוזת תווים, כולל הדמויות המיוחדות שנמצאות בשביתה.

בדוגמה הבאה, tr יחליף את כל התווים מהקלט הרגיל (לינוקס), על ידי מיפוי התווים מהערכה הראשונה לתאים התואמים מהערכה השנייה.

echo 'linuxize' | tr 'lin' 'red'

כל התרחשות של l מוחלפת עם r , i עם e , ו- n עם d :

reduxeze

ניתן להגדיר את ערכות התווים באמצעות טווחי תווים. לדוגמה, במקום לכתוב:

echo 'linuxize' | tr 'lmno' 'wxyz'

אתה יכול להשתמש:

echo 'linuxize' | tr 'ln' 'w-z'

כאשר משתמשים באפשרות -c ( -c --complement ), tr מחליף את כל התווים שאינם ב- SET1.

בדוגמה למטה כל התווים למעט "li" יוחלפו בתו האחרון מהערכה השנייה:

echo 'linuxize' | tr -c 'li' 'xy'

liyyyiyyy

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

האפשרות -d (- --delete ) אומרת ל- tr למחוק תווים שצוינו ב- SET1. בעת מחיקת תווים ללא סחיטה, ציין ערכה אחת בלבד.

הפקודה למטה תסיר תווים l , i ו- z :

echo 'Linuxize' | tr -d 'liz'

תו ה- L לא נמחק מכיוון שהקלט כולל L אותיות גדולות ואילו תו ה- l ב SET הוא אותיות קטנות.

Lnuxe

האפשרות -s (- --squeeze-repeats ) מחליפה רצף של התרחשויות חוזרות על-ידי התו שנקבע ב- SET האחרון.

בדוגמה הבאה, tr מסיר את תווי החלל החוזרים על עצמם:

echo "GNU \ Linux" | tr -s ' '

GNU \ Linux

כאשר משתמשים ב- SET2, מוחלף רצף התו שצוין ב- SET1 ב- SET2.

echo "GNU \ Linux" | tr -s ' ' '_'

GNU_\_Linux

האפשרות -t (- --truncate-set1 ) מאלצת את tr לקצץ את SET1 לאורכה של SET2 לפני שתמשיך לעיבוד נוסף.

כברירת מחדל, אם SET1 גדול מ- SET2 tr ישתמש מחדש בתו האחרון של SET2. הנה דוגמה:

echo 'Linux ize' | tr 'abcde' '12'

הפלט מראה כי התו e מ- SET1 מותאם לדמות האחרונה של SET2, שהיא 2 :

Linux iz2

כעת השתמש באותה פקודה עם אפשרות -t :

echo 'Linux ize' | tr -t 'abcde' '12'

Linux ize

אתה יכול לראות ששלוש התווים האחרונים של SET1 מוסרים. SET1 הופך להיות 'ab', באורך זהה ל- SET2, ולא נעשה שום החלפה.

שילוב של אפשרויות

הפקודה tr מאפשרת גם לשלב את האפשרויות שלה. לדוגמה, הפקודה הבאה מחליפה תחילה את כל התווים מלבד i ב- 0 ואז לוחצת על התווים החוזרים על עצמם:

echo 'Linux ize' | tr -cs 'i' '0'

0i0i0

דוגמאות לפיקוד Tr

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

המר את האותיות הקטנות לתיק הגדול

המרת אותיות קטנות לאותיות גדולות או הפוכות היא אחת ממקרי השימוש האופייניים לפקודת ה- tr . תואם את כל התווים הקטנים תואם את כל התווים הגדולים.

echo 'Linuxize' | tr '' ''

LINUXIZE

במקום שיעורי תווים תוכלו להשתמש גם בטווחים:

echo 'Linuxize' | tr 'az' 'A-Z'

כדי להמיר אותיות קטנות לקטנות, פשוט החלף את המקומות של הסטים.

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

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

echo "my phone is 123-456-7890" | tr -cd

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

1234567890

שים כל מילה בשורה חדשה

כדי להכניס כל מילה בשורה חדשה, עלינו להתאים את כל התווים הלא-אלפא-נומריים ולהחליף אותם בשורה חדשה:

echo 'GNU is an operating system' | tr -cs '' '\n'

GNU is an operating system

הסר שורות ריקות

כדי למחוק את השורות הריקות פשוט לחץ את התווים החדשים החוזרים על עצמם:

tr -s '\n' < file.txt > new_file.txt

בפקודה שלמעלה אנו משתמשים בסמל ההפניה < כדי להעביר את תוכן file.txt לפקודת tr . הפניה מחדש > כותבת את הפלט של הפקודה ל- new_file.txt .

הדפס ספריות $PATH בשורה נפרדת

המשתנה הסביבתי $PATH הוא רשימת ספריות המוגדרת במעי הגס המורה לקליפה לאילו ספריות לחפש קבצים ניתנים להפעלה כשאתה מקליד פקודה.

כדי להדפיס כל ספריה בשורה נפרדת עלינו להתאים את המעי הגס (:) ולהחליף אותה בשורה החדשה:

echo $PATH | tr ':' '\n'

/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin

סיכום

tr היא פקודה לתרגום או למחיקה של תווים.

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

טרמינל טר