במאמר זה נסביר את השימוש ב- grep utility בעזרת דוגמאות שונות. נשתמש ב- Debian 10 להסברת הפקודות והשיטות המוזכרות במאמר זה.
התקנת Grep
Grep מותקן ברוב הפצות לינוקס. אולם במקרה שהוא חסר במערכת שלך, תוכל להתקין אותה בשיטה הבאה בטרמינל:
$סודו apt-get להתקין אחיזה
שימוש ב- Grep
להלן התחביר הבסיסי של פקודת grep. זה מתחיל ב- grep ואחריו כמה אפשרויות וקריטריוני חיפוש ואז מסתיים בשם הקובץ.
$אחיזה [אפשרויות]תבנית[קוֹבֶץ...]
חפש קבצים
כדי לחפש שם קובץ בספרייה המכילה מחרוזת ספציפית, תוכל להשתמש ב- grep באופן הבא:
$ls -ה | אחיזה -אניחוּט
לדוגמה, לחפש שם קובץ המכיל מחרוזת מִבְחָן , הפקודה תהיה:
$ls-ה| אחיזה-אנימִבְחָןפקודה זו מפרטת את כל הקבצים המכילים את המחרוזת מִבְחָן .
חפש מחרוזת בקובץ
כדי לחפש מחרוזת בקובץ מסוים, תוכל להשתמש בתחביר הפקודה הבא:
$אחיזהשם קובץ מחרוזתלמשל, לחפש מחרוזת מִבְחָן בקובץ בשם קובץ test1 , השתמשנו בפקודה הבאה :
$אחיזהקובץ מבחן לעובד 1הפלט לעיל החזיר את המשפט מה- קובץ test1 המכיל את המחרוזת עוֹבֵד .
חפש מחרוזת במספר קבצים
כדי לחפש מחרוזת במספר קבצים, תוכל להשתמש בתחביר הפקודה הבא:
$אחיזהמחרוזת שם קובץ 1 שם קובץ 2לדוגמה, כדי לחפש עובד מחרוזת בשני הקבצים שלנו testfile1 ו- testfile2, השתמשנו בפקודה הבאה:
$אחיזהקובץ test test של העובד 1 testfile2הפקודה לעיל תפרט את כל השורות המכילות את עובד המחרוזת משני הקבצים testfile1 ו- testfile2.
תוכל גם להשתמש בתו כללי אם כל שמות הקבצים מתחילים באותו טקסט.
$אחיזהשם קובץ מחרוזת*כאילו, אם ניקח את הדוגמה למעלה שבה היו שמות הקבצים שלנו testfile1 ו- testfile2 , הפקודה תהיה:
$אחיזהקובץ מבחן של עובדים*חפש מחרוזת בקובץ על ידי התעלמות מהמקרה של המחרוזת
לרוב, נתקלת בכך כאשר אתה מחפש משהו באמצעות grep אך אינך מקבל פלט. זה קורה בגלל חוסר התאמה של מקרה בעת חיפוש מחרוזת. כמו בדוגמה שלנו, אם אנו משתמשים בטעות עוֹבֵד במקום עוֹבֵד , הוא יחזיר אפס מכיוון שהקובץ שלנו מכיל את המחרוזת עוֹבֵד באותיות קטנות.
אתה יכול להגיד ל- grep להתעלם מהמקרה של מחרוזת חיפוש באמצעות –i דגל אחרי grep כדלקמן:
$אחיזה–אני שם קובץ מחרוזתעל ידי שימוש בדגל –i, הפקודה תבצע את החיפוש ללא רגישות רישיות ותחזיר את כל השורות המכילות את המחרוזת עוֹבֵד בו מבלי לקחת בחשבון האותיות באותיות גדולות או קטנות.
חפש באמצעות הביטוי הרגיל
אם משתמשים בו כראוי, הביטוי הרגיל הוא תכונה יעילה מאוד ב- grep. באמצעות הפקודה Grep, באפשרותך להגדיר ביטוי רגיל עם מילת מפתח התחלה וסיום. בכך לא תצטרך להקליד את כל השורה באמצעות הפקודה grep. ניתן להשתמש בתחביר שלהלן למטרה זו.
$אחיזהמילת מפתח מתחילה.*ending שם קובץ המפתחלדוגמה, כדי לחפש שורה בקובץ בשם testfile1 שמתחיל במחרוזת זו ומסתיים בנתוני המחרוזת, השתמשנו בפקודה הבאה:
$אחיזהזֶה.*קובץ מבחן נתונים 1הוא ידפיס את כל השורה מתוך קובץ test1 המכיל את הביטוי (מילת המפתח מתחילה זו ונתוני מילת המפתח המסתיימים).
הדפס מספר שורות מסוים אחרי/לפני מחרוזת החיפוש
תוכל גם להציג את מספר השורות הספציפי בקובץ לפני/אחרי התאמת מחרוזת יחד עם המחרוזת המתאימה עצמה. ניתן להשתמש בתחביר הבא למטרה זו:
$אחיזה -ל <נ>שם קובץ מחרוזתהוא יציג מספר N שורות לאחר התאמת המחרוזת בקובץ שצוין כולל המחרוזת התואמת.
לדוגמה, זהו שם הקובץ לדוגמא שלנו testfile2 .
הפקודה הבאה תפלט את השורה התואמת המכילה את המחרוזת עוֹבֵד , יחד עם 2 השורות שאחריו.
$אחיזה-ל2–אני קובץ test2 של העובדבאופן דומה, כדי להציג מספר N של שורות לפני המחרוזת התואמת בקובץ ספציפי, השתמש בתחביר הבא:
$אחיזה -ב <נ>שם קובץ מחרוזתכדי להציג מספר N שורות סביב המחרוזת בקובץ ספציפי, השתמש בתחביר הבא:
$אחיזה -ג <נ>שם קובץ מחרוזתהדגשת החיפוש
Grep כברירת מחדל הדפס קווים תואמים אך אינו מראה לאיזה חלק מהשורה תואם. אם אתה משתמש באפשרות –צבע עם grep, הוא יראה היכן מופיעים מחרוזות העיבוד בקובץ שלך. Grep כברירת מחדל השתמש בצבע האדום להדגשה.
ניתן להשתמש בתחביר הבא למטרה זו:
$אחיזהשם קובץ מחרוזת--צֶבַעספירת מספר ההתאמות
אם אתה רוצה לספור כמה פעמים מילה מסוימת מופיעה בקובץ ספציפי, תוכל להשתמש באפשרות grep with –c. הוא מחזיר רק את מספר ההתאמות ולא את ההתאמות עצמן. ניתן להשתמש בתחביר הבא למטרה זו:
$אחיזה–C שם קובץ מחרוזתקובץ הדוגמא שלנו נראה כך:
להלן דוגמה לפקודה שהחזירה את מספר הפעמים שהמילה קוֹבֶץ הופיע בקובץ בשם קובץ test3 .
חיפוש הפוך
לפעמים אתה רוצה לבצע חיפוש הפוך המציג את כל השורות פרט לזה שהתאים לקלט. לשם כך, פשוט השתמש בדגל –v ואחריו grep:
$אחיזה–V שם קובץ מחרוזתלדוגמה, כדי להציג את כל השורות בקובץ קובץ test3 שאינם מכילים בהם את המילה חשבון, השתמשנו בפקודה הבאה:
$אחיזה–V testfile3שימוש ב- Grep עם פקודות אחרות
ניתן להשתמש ב- Grep גם לסנן את התוצאה הנדרשת מפלט פקודות שונות. למשל, מתוך רשימה מתאימה - מותקנת פלט פקודה, אתה רוצה למצוא רק את החבילות שהותקנו באופן אוטומטי, תוכל לסנן את התוצאה באמצעות grep כדלקמן:
$מַתְאִים--מוּתקָןרשימה| אחיזהאוֹטוֹמָטִי
באופן דומה, lscpu מספק מידע מפורט אודות המעבד. אם אתה רק מעוניין במידע בנוגע לארכיטקטורת המעבד, תוכל לסנן אותו באמצעות הפקודה הבאה:
$lscpu| אחיזהארכיטקטורהבמאמר זה, תיארנו כמה דוגמאות שיעזרו לך להבין את פקודות grep ואת השימוש בהן בתנאים שונים. אחיזה חזקה בפקודה grep יכולה לחסוך הרבה זמן אם אתה צריך להסתכל על תצורות גדולות או על קבצי יומן ולדפדף באמצעותן מידע שימושי.