logo

פקודת Grep בלינוקס/יוניקס עם דוגמאות

הפקודה 'grep' מייצגת 'הדפס ביטוי רגולרי גלובלי' . הפקודה grep מסננת את התוכן של קובץ מה שמקל על החיפוש שלנו.

זהו כלי עזר שורת פקודה לחיפוש בקבוצות נתונים בטקסט רגיל עבור שורות זהות לביטוי רגולרי. השם 'אחיזה' מגיע מהפקודה, כלומר, ed, המכילה את אותו אפקט. במקור, grep תוכנן עבור מערכת ההפעלה Unix, אך הוא הפך זמין עבור כל מערכת דמוית יוניקס מאוחר יותר וכמה אחרות כמו OS 9.

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

בביטוי כמו [a-z], סימן המינוס (-) cml מתאר טווח המבוסס על סדר האיסוף הנוכחי. סדר איסוף עשוי לציין מחלקות שוות בטווחי תווים לשימוש. הפקודה grep מניחה stdin כאשר לא מוזכרים קבצים.

קוד אפור

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

היסטוריה קצרה של grep

לפני שהוא קיבל את הכותרת, grep היה כלי עזר סודי שצוין על ידי קן תומפסון כדי למצוא קבצים עבור מספר תבניות. לא ידוע על קיומו, דאג מקלרוי ביקש מתומפסון לציין פונקציה כזו. עונה שהוא יחשוב בן לילה על כלי עזר כזה. תומפסון ביצע שיפורים ותיקן ביצות במשך כשעה בתוכנית שלו הידועה בשם 's' (או חפש). הוא הציג את הפונקציה למקלרוי למחרת, שאמר שזה זהה לרצונו. החשבון של תומפסון עשוי לתאר את האמונה שפקודת grep צוינה בן לילה.

תומפסון ציין את הגרסה הראשונית בשפת ההרכבה PDP-11 לתמיכה לי אי מקמוהן בדיקת הטקסט של המסמכים הפדרליסטים כדי להחליט על המחבר של העיתון הבודד. לעורך הטקסט של ed הייתה תמיכה בביטוי רגולרי אך לא ניתן היה להשתמש בו על טקסט כה גדול; תומפסון העתיק את הקוד הזה לכלי עצמאי. הוא בחר את השם בשל ב-ed; הפקודה grep תדפיס כל שורה זהה לתבנית המתוארת. ראשית, grep נוסף בגרסה 4 Unix, ואמר את זה 'זה מצוטט בדרך כלל ככלי התוכנה האב טיפוסי' , Mcllroy אישר grep עם 'מושרש באופן בלתי הפיך' פילוסופיית הכלים של תומפסון ביוניקס.

יישומים של grep

מגוון של יישומי grep קיים במספר סביבות פיתוח תוכנה ומערכות הפעלה. גרסאות מוקדמות כללו fgrep ו-egrep, שהוצגו בגרסת ה-7 של יוניקס. גרסת egrep תומכת בתחביר עבור ביטוי רגולרי מורחב שנכלל על ידי Alfred Aho לאחר יישום הביטוי הרגולרי המקורי של Ken Thompson. גרסת fgrep מוצאת כל רשימת מחרוזות קבועות עם ה- אלגוריתם התאמת מחרוזות Aho-Corasick . גרסאות בינאריות אלו זמינות במערכות מודרניות, מתחברים ל-grep או קוראים ל-grep סקריפט של מעטפת באמצעות הדגל הנכון שנוסף בזמן הפריסה בדרך כלל במערכות POSIX.

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

  • Grep היא הכותרת של הפונקציה המובנית שמחפשת את האלמנטים ברשימה שמשעשעים תכונה מסוימת ב- פרל שפת תכנות.
  • בדרך כלל, פונקציה זו מסדר גבוה נקראת 'לְסַנֵן' אוֹ 'איפה' בשפה אחרת.
  • הפקודה, כלומר, pcregrep , הוא יישום grep שמשתמש בתחביר עבור ביטוי רגולרי של Perl. ניתן להוסיף את אותה פונקציונליות לגרסת grep GNU באמצעות דגל -P.
  • כמו כן, יציאות grep (למשל, ב GnuWin32 ו ציגווין ) לבצע על Microsoft Windows. כמה גרסאות של Windows מספקות את אותה פקודת findstr או qgrep.
  • כמו כן, הפקודה grep היא חלק מכלי MSX-DOS2 של ASCII עבור גרסה 2 של MSX-DOS.
  • הפקודות fgrep, egrep ו-grep נשלחו ל-IBM i OS.
    לתוכנת Adobe InDesign יש פונקציות GREP (מאז מהדורת CS3) בתיבת הדו-שיח של הכרטיסייה שינוי/מצא 'GREP' וצוינו באמצעות CS4 ב- 'סגנונות GREP' סגנונות פסקה.

כיצד להתקין grep בלינוקס?

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

 $ sudo apt-get install grep 

grep עם צינור

הפקודה 'grep' משמשת בדרך כלל עם pipe (|) .

תחביר:

 command | grep 

דוגמא:

 cat marks.txt | grep 9 

מסנני גרפ של לינוקס 1

תראה את תמונת המצב שלמעלה, פקודת grep מסננת את כל הנתונים המכילים '9'.

grep ללא צינור

ניתן להשתמש בו גם ללא צינור.

תחביר:

 grep 

דוגמא:

 grep 9 marks.txt 

מסנני גרפ של לינוקס 2

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

אפשרויות grep

    grep -vM: הפקודה 'grep -v' מציגה שורות שאינן תואמות למילה שצוינה.

    תחביר:

     grep -v 

    דוגמא:

     grep -v 9 marks.txt 

    מסנני גרפ של לינוקס 3

    תסתכל על תמונת המצב שלמעלה, פקודה 'grep -v 9 marks.txt' מציג שורות שאינן מכילות את מילת החיפוש שלנו '9'.

    grep -i: הפקודה 'grep -i' מסננת פלט בצורה לא תלוית רישיות.

    תחביר:

     grep -i 

    דוגמא:

     grep -i red exm.txt 

    מסנני גרפ של לינוקס 4

    תסתכל על תמונת המצב שלמעלה, פקודה 'grep -i red exm.txt' מציג את כל השורות המכילות 'אדום' בין אם באותיות גדולות או קטנות.

    grep -A/ grep -B/ grep -C

    grep -פקודה משמשת להצגת ה שורה אחרי התוצאה .

    הפקודה grep -B משמשת להצגת ה קו לפני התוצאה .

    הפקודה grep -C משמשת להצגת ה שורה אחרי ושורה לפני התוצאה.

    אתה יכול להשתמש (A1, A2, A3.....)(B1, B2, B3....)(C1, C2, C3....) כדי להציג כל מספר של שורות.

    תחביר:

     grep -A grep -B grep -C 

    דוגמא:

    מהי הגשת ספריות
     grep -A1 yellow exm.txt grep -B1 yellow exm.txt grep -C1 yellow exm.txt 

    מסנני גרפ של לינוקס 5

    תסתכל על תמונת המצב שלמעלה, פקודה 'grep -A1 yellow exm.txt' מציג את השורה המבוקשת עם השורה הבאה אחריה, פקודה 'grep -B1 yellow exm.txt' מציג שורה של חיפוש עם שורה אחת ופקודה אחת קודמת 'grep -C1 yellow exm.txt' מציג שורה של חיפוש עם שורה אחת קודמת ואחריה.