הבנת פקודת grep עם דוגמאות מעשיות לסינון והצגת תוכן הקובץ בקלות
GREP
מייצג 'הדפסה רגילה של ביטוי גלובלי'. זהו כלי שימושי שורת פקודה שמסופק על ידי לינוקס, כדי לחפש את שורת הטקסט התואמת את הדפוס שסיפק המשתמש.
grep
לוקח את הקלט מהמשתמש בצורה של מחרוזות או מילים שהמשתמש רוצה לחפש בקובץ מסוים. לאחר מכן הפקודה בודקת את הקובץ שצוין על ידי המשתמש עבור דפוס זה ולאחר מכן מחזירה את השורות התואמות לדפוס שסופק.
זה עושה עבודה מצוינת על ידי סינון התוכן של קובץ ובכך מקל על המשימה שלנו לחפש תוכן מסוים בקבצים בודדים או מרובים בו זמנית.
במאמר זה, הבה נסקור את תפקוד ה- grep
פקודה עם כמה דוגמאות מעשיות בפירוט.
אפשרויות זמינות עם grep
פקודה
אלו הן כמה מהאפשרויות הבסיסיות בהן תשתמש לעתים קרובות עם grep
פקודה.
אוֹפְּצִיָה | תיאור |
-אני | לחיפוש לא תלוי רישיות |
-ר | כדי לחפש באופן רקורסיבי את כל הקבצים בספרייה שצוינה ובתיקיות המשנה שלה |
-ג | כדי להציג את מספר הפעמים הכולל שמופיעה מחרוזת |
-v | כדי להציג את השורות הלא תואמות |
-וו | סנן עבור המילה הספציפית הזו בשימוש בנפרד |
משתמש ב grep
פקודה
grep
הפקודה משמשת בדרך כלל עם הצינור (|
) שירות. זה יכול להיות מיושם עם צינור המעטפת כאשר אתה רוצה להשתמש בו עם כמה פקודות לינוקס אחרות. למרות ש, grep
ניתן להשתמש גם בנפרד ללא הצינור (|
) שירות.
הבה נראה כמה מהתחבירים הבסיסיים של ה grep
פקודה עם ובלי כלי הצינור.
הרשו לי תחילה להראות לכם את קובץ הטקסט לדוגמה שבו אשתמש כדי להמחיש את grep
פקודה.
הודו היא מדינה יפהפיה של אנשים אוהבי שלום. הודו עומדת על שלושה עמודים של בית מחוקקים, מבצעת ורשות שופטת. הודו היא מדינה יפה של אנשים אוהבי שלום. הודו דואגת לאנשים שכן המשאב שלה קואורדינטות קרטזיות החשיבות של כל הקואורדינטות הקרטזיות. להלן שתי שורות ריקות. שימוש בעגלת שוורים הוא מחזה נפוץ בכפר עבור המטלות החקלאיות. זהו הסוף של קובץ הדוגמה.
grep
בשימוש עם צינור ( | )תוֹעֶלֶת
grep
ניתן ליישם את הפקודה יחד עם פקודות לינוקס אחרות באמצעות צינורות המעטפת. כמו, באמצעות חתול
הפקודה כדי להציג את תוכן הקובץ, אך באותו הזמן להעביר את הפלט באמצעות ה- grep
פקודה להציג רק את התוכן שאתה רוצה לראות. זה יהיה ברור יותר כשנעבור על הדוגמה.
תחביר:
[פקודה] | grep [מחרוזת]
דוגמא:
cat sample.txt | grep בית המחוקקים
כאן, השתמשתי ב- חתול
הפקודה כדי להציג כמה שורות מקובץ 'sample.txt'. יש להציג רק את השורות שמכילות את המילה 'בית מחוקקים' ולהתעלם משאר השורות.
תְפוּקָה:
gaurav@ubuntu:~/workspace$ cat sample.txt | grep המחוקקים הודו עומדת על שלושה עמודי התווך של בית המחוקקים, הרשות המבצעת והשופטת. gaurav@ubuntu:~/workspace$
grep
בשימוש ללא צינור ( | )תוֹעֶלֶת
grep
ניתן אפילו להשתמש ישירות כפקודה בודדת מבלי להשתמש בצינור ( |
) שירות.
תחביר:
grep [string_to_be_searched] [שם קובץ]
דוגמא:
grep India sample.txt
תְפוּקָה:
הודו היא מדינה יפה של אנשים אוהבי שלום. הודו דואגת לאנשים בתור המשאב שלה
לפיכך, השתמשתי ב- grep
הפקודה ישירות כדי לסנן את השורות המכילות את המחרוזת 'הודו' מקובץ הטקסט 'sample.txt'.
חיפוש חסר רישיות באמצעות grep
פקודה
לינוקס נזהרת מאוד לגבי רגישות רישיות כאשר אנו מפעילים את הפקודות בטרמינל. זה דורש מהמשתמש להיות זהיר לגבי המקרה של המחרוזת שהוכנסה לפקודה.
הבה נראה זאת באמצעות דוגמה.
grep peace sample.txt
במקרה זה, לא נקבל פלט מכיוון שלא קיימת מילה בתור 'שלום' בקובץ המדגם. יש לנו את המילה 'שלום' עם 'P' גדול. המילה זהה אבל כשאנחנו משתמשים ב- grep
פקודה ללא כל אפשרות, הוא מחפש את ההתאמה המדויקת בקובץ, תוך התעלמות מכל שינוי באותיות.
כדי למנוע אי בהירות זו, אתה יכול פשוט להשתמש ב- -אני
אפשרות שממש אומרת את grep
פקודה "תשכח מהמקרה שהכנסתי אליו את המחרוזת ופשוט חפש את כל התבניות התואמות בקובץ."
תחביר:
grep -i [מחרוזת] [שם קובץ]
דוגמא:
grep -i peace sample.txt
תְפוּקָה:
הודו היא מדינה יפהפיה של אנשים אוהבי שלום. הודו היא מדינה יפה של אנשים אוהבי שלום.
כל השורות התואמות מוצגות ללא קשר למקרה בו נמצאת המחרוזת המתאימה.
חיפוש רקורסיבי באמצעות grep
פקודה
ה -ר
option תחפש את כל הקבצים בספרייה ואת כל ספריות המשנה שלה שתואמות לתבנית המחרוזת שסיפק המשתמש בפקודה.
תחביר:
grep -i -r [מחרוזת] [נתיב_קובץ]
דוגמא:
grep -i -r tomcat /home/gaurav/workspace
המחרוזת כאן היא 'tomcat' והיא תבוצע בחיפוש בסביבת העבודה של הספרייה. כל ספריות המשנה והקבצים בספריית 'סביבת העבודה' גם ייסרקו כך שיתאימו לדפוס המחרוזת שסופק.
תְפוּקָה:
./context_log.policy:// catalina.policy - הרשאות מדיניות אבטחה עבור Tomcat 7 ./context_log.policy:// הערה: אם tomcat-juli.jar נמצא ב-${catalina.base} ולא ב-${catalina.home }, ./context_log.policy:// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..} ./context_log.policy:grant codeBase "file:${catalina.home }/bin/tomcat-juli.jar" { ./context_log.policy: permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server"; ./context.xml: ./catalina.properties:# - Tomcat Bootstrap JARs ./catalina.properties:# - Tomcat API JARs ./catalina.properties:# - Tomcat JARs ./catalina.properties:# - נפוצים שאינם Tomcat JARs ./catalina.properties:org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar ./catalina.properties:tomcat.util.buf.StringCache.byte.enabled=true ./catalina.properties:# tomcat.util.buf.StringCache.char.enabled=true ./catalina.properties:#tomcat.util.buf.StringCache.trainThreshold=500000 ./catalina.properties:#tomcat.util.buf.StringCache.cacheSize=5000. /server.xml: pathname="conf/tomcat-users.xml" /> ./server.xml:
הערה: בזמן השימוש ב- -ר
אפשרות עם ה grep
הפקודה שעלינו לספק את הנתיב של הקובץ ולא את שם הקובץ
חיפוש מילים שלמות רק עם grep
פקודה
פעמים רבות המקרה הוא שאתה תחפש מילה אחת אבל בסופו של דבר תאכלס את הטרמינל שלך בשורות התואמות שאכן מכילות את המילה התואמת שלך אבל לא כמילה בודדת. ייתכן שתראה את השורות המכילות כמה מילים שחלק המשנה שלהן הוא המחרוזת שהזנת.
מבולבלים עם זה? אל תדאג, זה הרבה יותר קל להבין ברגע שאתה מקבל את הדוגמה.
דוגמא:
כאן, אני רוצה לחפש מילה בודדת 'עגלה' ולהציג את כל השורות התואמות למילה זו בקובץ 'sample.txt'.
grep -i cart sample.txt
תְפוּקָה:
הקואורדינטות הקרטזיות חשיבותן של כל הקואורדינטות הקרטזיות. שימוש בעגלת שוורים הוא מחזה נפוץ בכפר עבור המטלות החקלאיות. העגלה נעלמה כשהילד השאיר אותה משוחררת.
בפלט, אתה יכול לראות שהמילה 'קרטזית' מכילה גם את המילה 'עגלה' ומכאן שגם השורות המכילות את המילה 'קרטזית' מוצגות למרות שאיננו רוצים שהן יוצגו.
אתה יכול להשתמש ב -וו
אפשרות עם ה grep
פקודה לפתור אי בהירות זו.
תחביר:
grep -i -w [מחרוזת] [שם קובץ]
דוגמא:
grep -i -w cart sample.txt
תְפוּקָה:
שימוש בעגלת שוורים הוא מחזה נפוץ בכפר עבור המטלות החקלאיות. העגלה נעלמה כשהילד השאיר אותה רופפת.
כעת, לאחר שהשתמשת ב-w
אפשרות עם grep
תקבל רק את השורות שבהן המילה 'עגלה' משמשת כמכלול.
חיפוש הפוך באמצעות grep
פקודה
grep
ניתן להשתמש בפקודה גם בצורה הפוכה. אנחנו יכולים להשתמש ב grep
פקודה הפוכה על ידי הסתרת השורות התואמות והצגת השורות בהן לא נמצאה ההתאמה. אתה יכול לעשות זאת באמצעות -v
אפשרות עם ה grep
פקודה.
תחביר:
grep -i -v [מחרוזת] [שם קובץ]
דוגמא:
grep -i -v resource sample.txt
תְפוּקָה:
הודו היא מדינה יפהפיה של אנשים אוהבי שלום. הודו עומדת על שלושה עמודים של בית מחוקקים, מבצעת ורשות שופטת. הודו היא מדינה יפה של אנשים אוהבי שלום. קואורדינטות קרטזיות חשיבותן של כל הקואורדינטות הקרטזיות. שימוש בעגלת שוורים הוא מחזה נפוץ בכפר עבור המטלות החקלאיות. זהו הסוף של קובץ הדוגמה.
בפלט, כל שאר השורות מוצגות מלבד השורה המכילה את המילה 'משאב'.
ספירת מופעים של מחרוזת תואמת
הפלט של ה grep
הפקודה היא בדרך כלל ארוכה מאוד אם הנתונים בקובץ נרחבים. ככל שההתאמות גדולות יותר, כך התפוקות של ה- grep
פקודה. לינוקס מספקת לך אפשרות שבה תוכל להציג את מספר מופעי ההתאמה.
תחביר:
grep -i -c [מחרוזת] [שם קובץ]
דוגמא:
grep -i -c india sample.txt
תְפוּקָה:
gaurav@ubuntu:~/workspace$ grep -i -c india sample.txt 4 gaurav@ubuntu:~/workspace$
כאן, הפלט הוא מספר שהוא מספר המופעים של המילה 'הודו' בקובץ sample.txt.
הערה: השתמשתי ב- -אני
אפשרות בכל דוגמה פשוט להיות בטוח עם נושא רגישות המקרים. במקרה שאתה בטוח לגבי המקרה של המילה שאתה מחפש, אז אתה יכול בבטחה להשמיט את המילה -אני
אוֹפְּצִיָה.
סיכום
למדנו את השימושים הבסיסיים של grep
פקודה על מערכות לינוקס במדריך זה. למדנו גם להציג תכנים שונים המתאימים ביותר לדרישות שלנו ולא להעמיס את הטרמינל בהמון שורות. grep
הפקודה תהיה בוודאי חוסכת זמן אם תשמש לסריקת ערכות נתונים גדולות.