הפקודה grep של לינוקס משמשת כשיטת סינון קלט. GREP מייצג גלובל ביטוי רגיל מדפסת ולכן על מנת להשתמש בו ביעילות, אתה צריך קצת ידע על ביטויים רגולריים.
במאמר זה, תוכלו ללמוד מספר דוגמאות אשר יסייעו לך להבין את הפקודה grep.
01 של 09כיצד לחפש מחרוזת בקובץ באמצעות GREP
תארו לעצמכם שיש לכם קובץ טקסט בשם ספרים עם כותרות הילדים הבאות:
- רובין הוד
- כיפה אדומה
- פיטר פן
- זהבה ושלושת הדובים
- שלגיה ושבעת הגמדים
- Pinnochio
- החתול בכובע
- שלושת החזירים הקטנים
- הגראפלו
- צ'ארלי ומפעל השוקולד
כדי למצוא את כל הספרים עם המילה "The" בכותרת תשתמש בתחביר הבא:
grep הספריםהתוצאות הבאות יוחזרו:
- זהבה ושלושת הדובים
- שלגיה ושבעת הגמדים
- החתול בכובע
- שלושת החזירים הקטנים
- הגראפלו
- צ'ארלי ומפעל השוקולד
בכל מקרה, המילה "The" תודגש.
החיפוש הוא תלוי רישיות ולכן אם אחד הכותרות היה "" במקום "" אז זה לא היה מוחזר.
כדי להתעלם מהמקרה ניתן להוסיף את המתג הבא:
grep את הספרים - במקרה-מקרהניתן גם להשתמש במתג -i כדלקמן:
המשך קריאה למטה
02 מתוך 09חפש מחרוזת בקובץ באמצעות תווים כלליים
הפקודה grep חזקה מאוד. ניתן להשתמש בטכניקות רבות של התאמת תבניות כדי לסנן את התוצאות.
בדוגמה זו, אני אראה לך איך לחפש מחרוזת בקובץ באמצעות תווים כלליים.
תאר לעצמך שיש לך קובץ שנקרא מקומות עם שמות מקומות סקוטיים הבאים:
אברדיןאבריסטוויתאברלורinverurieחוצפהניובורגצבי חדשגלוואי חדשglasgowאדינבורואם אתה רוצה למצוא את כל המקומות עם inver בשם להשתמש בתחביר הבא:
מקומות grep inver *הכוכבית (*) תווים כלליים מייצגים 0 או רבים. לכן אם יש לך מקום שנקרא inver או מקום שנקרא Inverness אז שניהם יוחזרו.
תו כללי נוסף שבו תוכל להשתמש הוא התקופה (.). ניתן להשתמש בזה כדי להתאים אות אחת.
מקומות gver inver.rהפקודה הנ"ל תמצא מקומות הנקראים inverurie ו inverary אבל לא היה למצוא invereerie כי לא יכול להיות רק אחד התווים כלליים בין שני r's כפי שצוין על ידי תקופה אחת.
התו הכללי של התקופה הוא שימושי, אך הוא עלול לגרום לבעיות אם יש לך אחד כחלק מהטקסט שאתה מחפש.
לדוגמה, עיין ברשימה זו של שמות דומיינים
- לינוקס
- pcsupport.about.com
- mp3.about.com
- minecraft.about.com
- androidgames.about.com
- netforbeginners.about.com
- היומי
- google.co.uk
- google.au
- Direct.gov.uk
כדי למצוא את כל coms. אתה יכול פשוט לחפש באמצעות התחביר הבא:
grep * אודות * domainnamesהפקודה הנ"ל תיפול אם הרשימה מכילה את השם הבא:
- dailylinuxux.com/about.html
לכן, תוכל לנסות את התחביר הבא:
grep * about.com domainnamesפעולה זו תפעל בסדר, אלא אם כן קיים תחום עם השם הבא:
אודותכדי באמת לחפש את המונח about.com אתה צריך לברוח נקודה כדלקמן:
grep * אודות .com domainnamesהתו הכללי האחרון להראות לך את סימן השאלה אשר מייצג אפס או תו אחד.
לדוגמה:
grep? berenenamesהפקודה הנ"ל תחזור אברדין, אברסטוויט או אפילו ברוויק.
המשך קריאה למטה
03 מתוך 09חיפוש עבור מחרוזות בתחילת וקצה שורה באמצעות grep
סמל הקרט (^) והסמל ($) מאפשרים לך לחפש דפוסים בתחילת וסוף השורות.
תארו לעצמכם שיש לכם קובץ בשם כדורגל עם שמות הצוותים הבאים:
- בלקפול
- ליברפול
- מנצ'סטר סיטי
- לסטר סיטי
- מנצ'סטר יונייטד
- ניוקאסל יונייטד
- מועדון הכדורגל של מנצ'סטר
אם אתה רוצה למצוא את כל הקבוצות שהתחילו עם מנצ'סטר אתה תשתמש בתחביר הבא:
grep ^ צוותי מנצ'סטרהפקודה הנ"ל יחזור מנצ'סטר סיטי ומנצ'סטר יונייטד אבל לא FC United Of Manchester.
לחלופין, תוכל למצוא את כל הקבוצות המסתיימות ב- United באמצעות התחביר הבא:
Grep United teamהפקודה הנ"ל יחזור מנצ'סטר יונייטד ו ניוקאסל יונייטד אבל לא FC United Of Manchester.
04 של 09ספירת מספר גפרורים באמצעות grep
אם אתה לא רוצה להחזיר את השורות בפועל התואמות תבנית באמצעות grep אבל אתה רק רוצה לדעת כמה אתה יכול להשתמש בתחביר הבא:
grep-c inputfile דפוסאם התבנית תואמה פעמיים אז המספר 2 יוחזר.
המשך קריאה למטה
05 מתוך 09מציאת כל התנאים שאינם תואמים באמצעות grep
נניח שיש לך רשימה של שמות מקומות עם הארצות המפורטות להלן:
- אברדין סקוטלנד
- גלזגו סקוטלנד
- אנגליה
- קולווין
- לונדון, אנגליה
אולי שמתם לב כי מפרץ colwyn אין מדינה המשויכת אליו.
כדי לחפש את כל המקומות עם ארץ תוכל להשתמש בתחביר הבא:
קרקעות grep $ מקומות - -תוצאות מחזירה יהיה כל המקומות למעט מפרץ colwyn.
זה כמובן עובד רק עבור מקומות המסתיימים בארץ (כמעט מדעית).
ניתן לבטל את הבחירה באמצעות התחביר הבא:
grep -v land $ placeזה ימצא את כל המקומות שלא נגמרו עם האדמה.
06 מתוך 09כיצד למצוא שורות ריקות בקבצים באמצעות grep
תאר לעצמך שיש לך קובץ קלט שבו נעשה שימוש על ידי יישום של צד שלישי אשר מפסיק לקרוא את הקובץ כאשר הוא מוצא שורה ריקה כדלקמן:
- אברדין
- inverness scotland
- -
- קולווין מפרץ וויילס
כאשר היישום מקבל את הקו אחרי liverpool זה יפסיק לקרוא את משמעות המפרץ colwyn הוא החמיץ לחלוטין.
ניתן להשתמש ב- grep כדי לחפש שורות ריקות בתחביר הבא:
grep ^ $ מקומותלמרבה הצער זה לא שימושי במיוחד כי זה רק מחזיר את השורות הריקות.
אתה יכול כמובן לקבל ספירה של מספר שורות ריקות כמו בדיקה כדי לראות אם הקובץ תקף כדלקמן:
grep-c ^ $ מקומותעם זאת, יהיה זה יותר שימושי לדעת את מספרי הקו שיש להם שורה ריקה, כך שתוכל להחליף אותם. תוכל לעשות זאת באמצעות הפקודה הבאה:
grep-n ^ $ מקומותהמשך קריאה למטה
07 מתוך 09כיצד לחפש מחרוזות של אותיות רישיות או קטנות באמצעות grep
באמצעות grep אתה יכול לקבוע אילו שורות בקובץ יש תווים באותיות גדולות באמצעות התחביר הבא:
grep 'A-Z'סוגריים מרובעים מאפשרים לך לקבוע את טווח התווים. בדוגמה לעיל הוא מתאים לכל תו שהוא בין A ו- Z.
לכן, כדי להתאים תווים קטנים ניתן להשתמש בתחביר הבא:
grep 'a-z'אם אתה רוצה להתאים רק אותיות ולא nomics או סמלים אחרים אתה יכול להשתמש בתחביר הבא:
grep 'a-zA-Z'אתה יכול לעשות את אותו הדבר עם מספרים כדלקמן:
grep '0-9' שם קובץ 08 מתוך 09מחפש דפוסים חוזרים באמצעות grep
ניתן להשתמש בסוגריים מסולסלים {} כדי לחפש דפוס חוזר.
נניח שיש לך קובץ עם מספרי טלפון כדלקמן:
- 055-1234
- 055-4567
- 555-1545
- 444-0167
- 444-0854
- 4549-2234
- x44-1234
אתה יודע את החלק הראשון של המספר צריך להיות שלוש ספרות ואתה רוצה למצוא את השורות שאינן תואמות דפוס זה.
מהדוגמה הקודמת אתה יודע ש- 0-9 מחזיר את כל המספרים בקובץ.
במקרה זה אנו רוצים את השורות המתחילות בשלוש ספרות ואחריו מקף (-). תוכל לעשות זאת באמצעות התחביר הבא:
grep "^ 0-9 0-9 0-9 -" מספריםכפי שאנו יודעים מהדוגמאות הקודמות, קראט (^) פירושו שהקו חייב להתחיל בדפוס הבא.
0-9 יחפש מספר כלשהו בין 0 ל -9. כיוון שהדבר כלול שלוש פעמים הוא מתאים לשלושה מספרים. לבסוף יש מקף כדי לציין כי מקף חייב להצליח את שלושת המספרים.
באמצעות סוגריים מסולסלים אתה יכול לעשות את החיפוש קטן יותר כדלקמן:
grep "^ 0-9 {3 } -" מספריםקו נטוי בורח {סוגר כך שזה עובד כחלק מהביטוי הרגיל אבל בעצם מה זה אומר הוא 0-9 {3} כלומר כל מספר בין 0 ל 9 שלוש פעמים.
סוגריים מתולתל יכול לשמש גם כדלקמן:
{5,10}{5,}{5,10} פירושו שהדמות המבוקשת חייבת להיות חוזרת לפחות 5 פעמים אך לא יותר מ -10, ואילו {5,} פירושו שהדמות חייבת להיות חוזרת על עצמה לפחות 5 פעמים, אך היא יכולה להיות יותר מזה.
המשך קריאה למטה
09 של 09שימוש בפלט מפקודות אחרות באמצעות grep
עד כה בדקנו התאמת דפוס בתוך קבצים בודדים, אבל grep יכול להשתמש בפלט של פקודות אחרות כקלט עבור התאמת דפוס.
דוגמה מצוינת לכך היא שימוש בפקודה PS אשר מפרטת תהליכים פעילים.
לדוגמה, הפעל את הפקודה הבאה:
נ.ב. -efכל התהליכים הפועלים במערכת שלך יוצגו.
באפשרותך להשתמש ב- grep כדי לחפש תהליך ריצה מסוים באופן הבא:
ps -ef grepסיכום
הפקודה grep היא פקודת לינוקס בסיסית וזה אחד כי הוא שווה את הלמידה כפי שהוא יהפוך את החיים שלך הרבה יותר קל בעת חיפוש קבצים ותהליכים בעת שימוש במסוף.