מבוא
הפקודה grep של לינוקס משמשת כשיטת סינון קלט.
GREP מייצג גלובל ביטוי רגיל מדפסת ולכן על מנת להשתמש בו ביעילות, אתה צריך קצת ידע על ביטויים רגולריים.
במאמר זה, אני הולך להראות לך מספר דוגמאות אשר יסייעו לך להבין את הפקודה grep.
01 של 09
כיצד לחפש מחרוזת בקובץ באמצעות GREP
תארו לעצמכם שיש לכם קובץ טקסט בשם ספרים עם כותרות הילדים הבאות:
- רובין הוד
- כיפה אדומה
- פיטר פן
- זהבה ושלושת הדובים
- שלגיה ושבעת הגמדים
- Pinnochio
- החתול בכובע
- שלושת החזירים הקטנים
- הגראפלו
- צ'ארלי ומפעל השוקולד
כדי למצוא את כל הספרים עם המילה "The" בכותרת תשתמש בתחביר הבא:
grep הספרים
התוצאות הבאות יוחזרו:
- זהבה ושלושת הדובים
- שלגיה ושבעת הגמדים
- החתול בכובע
- שלושת החזירים הקטנים
- הגראפלו
- צ'ארלי ומפעל השוקולד
בכל מקרה, המילה "The" תודגש.
שים לב כי החיפוש הוא תלוי רישיות אז אם אחד הכותרות היה "" במקום "" אז זה לא היה מוחזר.
כדי להתעלם מהמקרה ניתן להוסיף את המתג הבא:
grep את הספרים - במקרה-מקרה
ניתן גם להשתמש במתג -i כדלקמן:
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
כדי למצוא את כל about.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
נניח שיש לך רשימה של שמות מקומות עם הארצות המפורטות להלן:
- אברדין
- glasgow סקוטלנד
- -
- קולווין
- לונדון, אנגליה
אולי שמתם לב כי מפרץ 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 '[AZ]'
סוגריים מרובעים [] מאפשרים לך לקבוע את טווח התווים. בדוגמה לעיל הוא מתאים לכל תו שהוא בין A ו- Z.
לכן, כדי להתאים תווים קטנים ניתן להשתמש בתחביר הבא:
grep '[az]'
אם אתה רוצה להתאים רק אותיות ולא 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