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

איך זה עובד

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

דביאן - הפצה שרת יציב
אובונטו - שולחן העבודה מבוסס במקור על דביאן
קובונטו - משתמש בשולחן העבודה של KDE במקום ב- Gnome
פדורה - המשך מערכת שולחן העבודה Red Hat חינם
ג'נטו - מערכת לינוקס מהירה וממוקדת למשתמשים
SuSE - לינוקס מסחרי בבעלות נובל
מנטה - הפצה נגזרת של אובונטו עם תוכנות מוגבלות נוספות

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

 grep Ubuntu distros.txt 

(ייתכן שהגירסה של grep עשויה לכלול הדגשת צבע, לדוגמה, בדוגמה לעיל)

רגישות למקרה

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

 grep -i ubuntu distros.txt 

כל העולם

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

 grep -i ubuntu distros.txt 

הוֹצָאָה מִן הַכְלַל

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

תווים כלליים

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

טווחים

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

 פריט 1 - תפוחים פריט 2 - בננות פריט 3 - אגוזי קוקוס פריט 4 - אפרסקים פריט 5 - ענבים פריט 6 - משמש 

אתה יכול לבחור טווח מסוים באמצעות משהו כמו

 grep "פריט [2-4]" items.txt 

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