מהו Grep
Grep, הקצרה ל-"global regular expression print", היא פקודה המשמשת לחיפוש והתאמה של דפוסי טקסט בקבצים המכילים ביטויים רגולריים. תוך כדי זאת, הפקודה מותקנת מראש בכל הפצות Linux. במדריך זה, נתרכז בשימושים הנפוצים ביותר של פקודת grep, יחד עם מקרים פופולריים.
פקודת Grep ב-Linux
ניתן להשתמש בפקודת Grep כדי למצוא או לחפש ביטוי רגולרי או מחרוזת בקובץ טקסט. כדי לדגים זאת, ניצור קובץ טקסט בשם welcome.txt ונוסיף תוכן כפי שמוצג.
Welcome to Linux !
Linux is a free and opensource Operating system that is mostly used by
developers and in production servers for hosting crucial components such as web
and database servers. Linux has also made a name for itself in PCs.
Beginners looking to experiment with Linux can get started with friendlier linux
distributions such as Ubuntu, Mint, Fedora and Elementary OS.
נהדר! עכשיו אנו מוכנים לבצע כמה פקודות Grep ולשנות את הפלט כך שנקבל את התוצאות הרצויות. כדי לחפש מחרוזת בקובץ, הפעילו את הפקודה הבאה תחביר
$ grep "string" file name
או
$ filename grep "string"
דוגמה:
$ grep "Linux" welcome.txt
פלט כפי שניתן לראות, Grep לא רק חיפשה והתאימה למחרוזת "Linux", אלא גם הדפיסה את השורות שבהן המחרוזת מופיעה. אם הקובץ נמצא בנתיב שונה, יש לציין את נתיב הקובץ כפי שמוצג למטה.
$ grep "string" /path/to/file
צביעת תוצאות Grep באמצעות האפשרות –color
אם אתה עובד על מערכת שאינה מציגה את מחרוזת החיפוש או התבנית בצבע שונה משאר הטקסט, השתמש ב־--color
כדי להדגיש את התוצאות שלך. דוגמה
$ grep --color "free and opensource" welcome.txt
פלט
חיפוש למחרוזת באופן רקורסיבי בכל הספריות
אם ברצונך לחפש מחרוזת בספריית הנוכחית שלך ובכל התת־ספריות האחרות, חפש באמצעות הדגל - r
כמו שמוצג
$ grep -r "string-name" *
לדוגמה
$ grep -r "linux" *
פלט
התעלמות מרגישות האותיות
בדוגמה למעלה, תוצאות החיפוש שלנו נתנו לנו את מה שרצינו מכיוון שהמחרוזת "Linux" צויינה באותיות רישיות וגם קיימת בקובץ באותיות רישיות. עכשיו בואו ננסה לחפש את המחרוזת באותיות קטנות.
$ grep "linux" file name
שום דבר מהפלט, נכון? זה מכיוון שפקודת ה-Grep לא הצליחה למצוא ולהתאים את המחרוזת "linux" מאחר והאות הראשונה היא אות קטנה. כדי להתעלם מרגישות האותיות, יש להשתמש בדגל -i
ולבצע את הפקודה הבאה
$ grep -i "linux" welcome.txt
פלט מדהים, איננו? ה-
-i
נהוג לרוב להציג מחרוזות ללא התייחסות לרגישות האותיות שלהן.
לספור את השורות בהן מתאימות מחרוזות בעזרת האופציה -c
כדי לספור את מספר השורות הכולל שבהן מופיע או מתגוררת התבנית של המחרוזת, יש לבצע את הפקודה הבאה
$ grep -c "Linux" welcome.txt
פלט
שימוש ב-Grep להיפוך הפלט
כדי להפוך את הפלט של Grep, השתמש בדגל -v
. אפשרות ה--v
מציינת ל-grep להדפיס את כל השורות שאינן מכילות או מתאימות לביטוי. האפשרות -v מורידה ל-grep להפוך את הפלט שלו, שכן במקום להדפיס שורות שמתאימות, הוא יעשה את ההפך וידפיס את כל השורות שלא מתאימות לביטוי. חוזרים לקובץ שלנו, בואו נציג את מספרי השורות כפי שמוצג. לחץ ESC בעורך Vim, הקלד : ואז
set nu
לחץ Enter פלט כעת, כדי להציג את השורות שאינן מכילות את המחרוזת "Linux", הרץ
$ grep -v "Linux" welcome.txt
פלט כפי שניתן לראות, grep הציג את השורות שאינן מכילות את תבנית החיפוש.
ממספר את השורות שמכילות את תבנית החיפוש באמצעות האפשרות -n
כדי למספר את השורות שבהן המחרוזת מתאימה, השתמש באפשרות -n
כפי שמוצג
$ grep -n "Linux" welcome.txt
פלט
חפש את המילה המתאימה בדיוק באמצעות האפשרות -w
עבור העברת הדגל -w
תחפש את השורה המכילה את המילה המתאימה בדיוק כפי שמוצג
$ grep -w "opensource" welcome.txt
פלט אך, אם תנסה
$ grep -w "open" welcome.txt
לא יוחזרו תוצאות מכיוון שאנו לא מחפשים תבנית אלא מילה בדיוק!
שימוש בצינורות עם grep
פקודת ה- grep יכולה להיות בשימוש יחד עם צינורות על מנת לקבל פלט בולט. לדוגמה, אם ברצונך לדעת אם חבילה מסוימת מותקנת במערכת Ubuntu, בצע
$ dpkg -L | grep "package-name"
לדוגמה, כדי לגלות האם OpenSSH מותקן במערכתך, העבר את הפקודה dpkg -l
ל- grep כפי שמוצג
$ dpkg -L | grep -i "openssh"
פלט
הצגת מספר השורות לפני או אחרי תבנית חיפוש באמצעות קווים אנכיים
ניתן להשתמש בפקודות -A או -B כדי להציג את מספר השורות שלפני או אחרי מחרוזת החיפוש. הדגמה משתמשת בדגמים הבאים: הדגמה הראשונה מציגה את השורה המכילה את המחרוזת וארבע שורות טקסט אחריה בפקודת ifconfig
באמצעות הדגמה
$ ifconfig | grep -A 4 ens3
ens. פלט להפך, בדוגמה הבאה, שימוש בדגם -B יציג את השורה המכילה את מחרוזת החיפוש ושלוש שורות טקסט לפני ether בפקודת
ifconfig
. פלט
$ ifconfig | grep -B 4 ether
שימוש ב- grep עם REGEX – ביטויים רגולריים
המונח REGEX הוא ראשי תיבות לביטוי רגולרי. ביטוי רגולרי הוא סדרה של תווים המשמשת להתאים לתבנית. להלן דוגמאות:
^ Matches characters at the beginning of a line
$ Matches characters at the end of a line
"." Matches any character
[a-z] Matches any characters between A and Z
[^ ..] Matches anything apart from what is contained in the brackets
דוגמה כדי להדפיס שורות שמתחילות בתו מסוים, התחברות התחברות היא;
grep ^character file_name
לדוגמה, כדי להציג את השורות שמתחילות באות "ד" בקובץ welcome.txt שלנו, נפעיל
$ grep ^d welcome.txt
פלט כדי להציג שורות שמסתיימות באות 'x' נפעיל
$ grep x$ welcome.txt
פלט
קבלת עזרה עם אפשרויות Grep נוספות
אם תרצה ללמוד עוד על שימוש בפקודת Grep, הפעל את הפקודה למטה כדי לקבל הצצה מהירה של דגלים או אפשרויות אחרות שאתה יכול להשתמש יחד עם הפקודה.
$ grep --help
פלט דוגמה אנו מעריכים את הזמן שלך שביקשת לקרוא את המדריך הזה. נסה את הפקודות בקלות וספר לנו איך זה הלך.
Source:
https://www.digitalocean.com/community/tutorials/grep-command-in-linux-unix