האם אי פעם נתקלת במשימה לחפש מחרוזת או דפוס מסוים בקובץ, אך אין לך מושג מאיפה להתחיל בחיפוש? אז הנה פקודת ה־grep להצלתך!
grep היא כלי חזק לחיפוש מדפסת בקבצים המותקנת בכל הפצה של Linux. אם מסיבה כלשהי, היא אינה מותקנת במערכת שלך, תוכל להתקין אותה בקלות דרך מנהל החבילות שלך כפי שמוצג.
$ sudo apt install grep [On Debian, Ubuntu and Mint] $ sudo yum install grep [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux] $ sudo emerge -a sys-apps/grep [On Gentoo Linux] $ sudo apk add grep [On Alpine Linux] $ sudo pacman -S grep [On Arch Linux] $ sudo zypper install grep [On OpenSUSE]
I have found that the easiest way to get your feet wet with the grep command is to just dive right in and use some real-world examples.
1. חיפוש ומציאת קבצים ב־Linux
נניח שהתקנת עותק חדש של אובונטו החדשה על המחשב שלך ואתה מתכוון לנסות את כתיבת התסריטים ב־Python.
אתה עוקב אחרי המדריכים ברשת, אך אתה רואה שישנם שני גרסאות שונות של Python בשימוש, ואתה לא יודע איזו גרסה של Python הותקנה על אובונטו על ידי המתקין, או אם הוא התקין מודולים כלשהם.
פשוט הפעל את הפקודה הבאה של dpkg עם grep כפי שמוצג:
dpkg -l | grep -i python

רץ את dpkg –l
, שמפרט חבילות *.deb
המותקנות במערכת שלך. שנית, הפנינו את הפלט הזה ל־grep -i python
, שפשוט אומר "לך אל grep וסנן והחזק החזרה כל מה שיש בו 'python'".
האפשרות -i
נמצאת כאן כדי להתעלם מהאותיות רישיות, מאחר ש־grep רגיש לאותיות רישיות. שימוש באפשרות -i
הוא רגיל ומומלץ, אלא אם כן, כמובן, אתה מנסה לקבוע חיפוש ספציפי יותר.
2. חיפוש וסינון קבצים ב־Linux
grep יכול לשמש גם לחיפוש וסינון בתוך קבצים פרטיים או קבצים מרובים. בוא נקח את התרחיש הזה:
יש לך קצת בעיות עם השרת האינטרנט שלך Apache, והגעת לאחד מהפורומים המדהימים הרבים ברשת כדי לבקש עזרה.
הנפש הנדיבה שמשיבה לך שאלה ביקשה ממך לפרסם את תוכן קובץ ה־/etc/apache2/apache2.conf שלך. לא היה נוח יותר לך, לבעל העזרה ולכל מי שקורא את זה אם היית יכול להסיר את כל השורות המפורטות? אפשר! פשוט הפעל את זה:
grep -v ^\# /etc/apache2/apache2.conf | grep .
האפשרות -v
אומרת ל־grep להפוך את הפלט שלו, המשמעות היא שבמקום להדפיס שורות התואמות, הוא יבצע את ההיפך וידפיס את כל השורות שאינן מתאימות לביטוי, במקרה זה, השורות המפורטות עם ה־#
.
שים לב שגם השתמשנו ב־grep .
בסופו כדי להסתיר את הפלט של כל השורות הריקות. בכך אנו רואים רק את ההגדרות של התצורה בטרמינל שלנו.

3. מצא את כל קבצי ה־.mp3 ב־Linux
גרפ יכול להיות מאוד שימושי לסינון מתוך stdout. לדוגמה, נניח שיש לך תיקייה שלמה מלאה בקבצי מוזיקה במספר פורמטים שונים.
ברצונך למצוא את כל קבצי ה-*.mp3
של האמן JayZ, אך אינך רוצה אף אחד מהשירים המרומקים. באמצעות פקודת find עם מספר של grep תוכל לעשות את זה:
# find . -name “*.mp3” | grep –i JayZ | grep –vi “remix”
בדוגמה זו, אנו משתמשים ב-find כדי להדפיס את כל הקבצים עם סיומת *.mp3
, מפנים את זה ל-grep –i
כדי לסנן ולהדפיס את כל הקבצים בשם "JayZ" ואז צינון נוסף ל-grep –vi
שמסנן ולא מדפיס את כל שמות הקבצים עם המחרוזת (בכל אופן) "remix".
[ ייתכן גם שתאהב: 35 דוגמאות מעשיות של פקודת Find ב-Linux ]
4. הצגת מספר השורות לפני או לאחר מחרוזת החיפוש
אפשרויות נוספות הן המתגים -A
ו--B
, המציגים את השורה שהתאימה ומספר שורות לפני או אחרי מחרוזת החיפוש.
בעוד עמוד האיש נותן הסבר מפורט יותר, אני מוצא את זה הכי קל לזכור את האפשרויות כ--A
= אחרי, ו--B
= לפני:
ifconfig | grep -A 4 inet ifconfig | grep -B 2 UP

5. מדפיס מספר השורות סביב ההתאמה
אפשרות ה--C
של ה-grep דומה, אך במקום להדפיס את השורות שבאות לפני או אחרי המחרוזת, היא מדפיסה את השורות בכיוון שהוזן:
# ifconfig | grep -C 2 lo TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 15314 bytes 1593769 (1.5 MB) RX errors 0 dropped 0 overruns 0 frame 0
6. סופר את מספר ההתאמות
דומה לשימוש בצינור (פקודת wc) של מחרוזת grep, אפשרות המובנית של grep יכולה לבצע את אותו הדבר עבורך:
# ifconfig | grep -c inet6
7. מחפש קבצים לפי מחרוזת נתונה ב-Linux
האפשרות –n
עבור grep היא מאוד שימושית בעת תיקוני באגים בקבצים. היא מציגה את מספר השורה בקובץ של מחרוזת החיפוש הנתונה:
# grep -n "main" setup.py
8. מחפש מחרוזת באופן רקורסיבי בכל הספריות
אם ברצונך לחפש מחרוזת בתיקייה הנוכחית יחד עם כל התת-תיקיות, תוכל לציין את האפשרות –r
כדי לחפש באופן רקורסיבי:
# grep -r “function” *
9. מחפש את התבנית המלאה
העברת האפשרות -w
ל-grep מחפשת את התבנית המלאה שנמצאת במחרוזת. לדוגמה, בשימוש:
# ifconfig | grep -w "RUNNING"
תדפיס את השורה המכילה את התבנית בציטוטים. ממנה, אם תנסה:
# ifconfig | grep -w "RUN"

לא יוחזר דבר מאחר ואנו לא מחפשים תבנית, אלא מילה שלמה.
10. חיפוש מחרוזת בקבצים מדוחסים
חשוב לציין כמה דברים על השאלה של grep. הראשון הוא zgrep, שדומה ל־zcat, ומיועד לשימוש בקבצים מדוחסים. הוא מקבל את אותם אפשרויות כמו grep וניתן להשתמש בו באותה הדרך:
# zgrep -i error /var/log/syslog.2.gz

11. התאמת ביטויים רגולריים בקבצים
הפקודה egrep היא עוד אחת מן הגרסאות של grep שמציינת "ביטוי רגולרי גלובלי מורחב". היא מזהה תווים מטא נוספים כמו at + ? |
ו־()
.
פקודת egrep מאוד שימושית לחיפוש בקבצי מקור וחלקי קוד אחרים, במקרה הצורך. ניתן להפעיל אותה מ־grep הרגיל על ידי ציון אפשרות -E
.
grep -E
12. חיפוש מחרוזת קבועה
הפקודה fgrep חופשת קובץ או רשימת קבצים למחרוזת קבועה. זו אותה הדבר כמו grep -F
. דרך נפוצה להשתמש ב־fgrep היא להעביר לו קובץ של מבני מחרוזות:
fgrep –f file_full_of_patterns.txt file_to_search.txt
זהו נקודת התחלה בלבד עם grep, אך כפי שאתה כנראה מסוגל לראות, זה לא יקרה ללא מגוון של צרכים. מלבד הפקודות הפשוטות בשורה אחת שהטמנו, grep ניתן להשתמש בו לכתיבת משימות cron חזקות, ולתכנות shell scripts חזקים, לדוגמה.
השתמש ביצירתיות, נסה את האפשרויות בדף ה-man, וצור ביטויי grep המתאימים למטרותיך!
Source:
https://www.tecmint.com/12-practical-examples-of-linux-grep-command/