דוגמה שימושים של פיקוד לינוקס

מבוא

הפקודה grep של לינוקס משמשת כשיטת סינון קלט.

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

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

01 של 09

כיצד לחפש מחרוזת בקובץ באמצעות GREP

הפקודה grep Linux.

תארו לעצמכם שיש לכם קובץ טקסט בשם ספרים עם כותרות הילדים הבאות:

כדי למצוא את כל הספרים עם המילה "The" בכותרת תשתמש בתחביר הבא:

grep הספרים

התוצאות הבאות יוחזרו:

בכל מקרה, המילה "The" תודגש.

שים לב כי החיפוש הוא תלוי רישיות אז אם אחד הכותרות היה "" במקום "" אז זה לא היה מוחזר.

כדי להתעלם מהמקרה ניתן להוסיף את המתג הבא:

grep את הספרים - במקרה-מקרה

ניתן גם להשתמש במתג -i כדלקמן:

grep -i הספרים

02 מתוך 09

חפש מחרוזת בקובץ באמצעות תווים כלליים

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

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

תאר לעצמך שיש לך קובץ שנקרא מקומות עם שמות מקומות סקוטיים הבאים:

אברדין

אבריסטווית

אברלור

inverurie

חוצפה

ניובורג

צבי חדש

גלוואי חדש

glasgow

אדינבורו

אם אתה רוצה למצוא את כל המקומות עם inver בשם להשתמש בתחביר הבא:

מקומות grep inver *

הכוכבית (*) תווים כלליים מייצגים 0 או רבים. לכן אם יש לך מקום שנקרא inver או מקום שנקרא inverness אז שניהם יוחזרו.

תו כללי נוסף שבו תוכל להשתמש הוא התקופה (.). ניתן להשתמש בזה כדי להתאים אות אחת.

מקומות gver inver.r

הפקודה הנ"ל תמצא מקומות הנקראים inverurie ו inverary אבל לא היה למצוא invereerie כי לא יכול להיות רק אחד התווים כלליים בין שני r's כפי שצוין על ידי תקופה אחת.

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

לדוגמה, עיין ברשימה זו של שמות דומיינים

כדי למצוא את כל about.coms אתה יכול פשוט לחפש באמצעות התחביר הבא:

grep * אודות * domainnames

הפקודה הנ"ל תיפול אם הרשימה מכילה את השם הבא:

לכן, תוכל לנסות את התחביר הבא:

grep * about.com domainnames

פעולה זו תפעל בסדר, אלא אם כן קיים תחום עם השם הבא:

אודות

כדי באמת לחפש את המונח about.com אתה צריך לברוח נקודה כדלקמן:

grep * אודות \ .com domainnames

התו הכללי האחרון להראות לך את סימן השאלה אשר מייצג אפס או תו אחד.

לדוגמה:

grep? berenenames

הפקודה הנ"ל תחזור אברדין, אברסטוויט או אפילו ברוויק.

03 מתוך 09

חיפוש עבור מחרוזות בתחילת וקצה שורה באמצעות grep

סמל הקרט (^) והסמל ($) מאפשרים לך לחפש דפוסים בתחילת וסוף השורות.

תארו לעצמכם שיש לכם קובץ בשם כדורגל עם שמות הצוותים הבאים:

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

grep ^ צוותי מנצ'סטר

הפקודה הנ"ל יחזור מנצ'סטר סיטי ומנצ'סטר יונייטד אבל לא FC United Of Manchester.

לחלופין, תוכל למצוא את כל הקבוצות המסתיימות ב- United באמצעות התחביר הבא:

Grep United team

הפקודה הנ"ל יחזור מנצ'סטר יונייטד וניוקאסל יונייטד אבל לא FC United Of Manchester.

04 של 09

ספירת מספר גפרורים באמצעות grep

אם אתה לא רוצה להחזיר את השורות בפועל התואמות תבנית באמצעות grep אבל אתה רק רוצה לדעת כמה אתה יכול להשתמש בתחביר הבא:

grep-c inputfile דפוס

אם התבנית תואמה פעמיים אז המספר 2 יוחזר.

05 מתוך 09

מציאת כל התנאים שאינם תואמים באמצעות grep

נניח שיש לך רשימה של שמות מקומות עם הארצות המפורטות להלן:

אולי שמתם לב כי מפרץ colwyn אין מדינה המשויכת אליו.

כדי לחפש את כל המקומות עם ארץ תוכל להשתמש בתחביר הבא:

קרקעות grep $ מקומות - -

תוצאות מחזירה יהיה כל המקומות למעט מפרץ colwyn.

זה כמובן עובד רק עבור מקומות המסתיימים בארץ (כמעט מדעית).

ניתן להפוך את הבחירה באמצעות התחביר הבא:

grep -v land $ place

זה ימצא את כל המקומות שלא נגמרו עם האדמה.

06 מתוך 09

כיצד למצוא שורות ריקות בקבצים באמצעות grep

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

כאשר היישום מקבל את הקו אחרי liverpool זה יפסיק לקרוא את משמעות המפרץ colwyn הוא החמיץ לחלוטין.

ניתן להשתמש ב- grep כדי לחפש שורות ריקות בתחביר הבא:

grep ^ $ מקומות

למרבה הצער זה לא שימושי במיוחד כי זה רק מחזיר את השורות הריקות.

אתה יכול כמובן לקבל ספירה של מספר שורות ריקות כמו בדיקה כדי לראות אם הקובץ תקף כדלקמן:

grep-c ^ $ מקומות

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

grep-n ^ $ מקומות

07 מתוך 09

כיצד לחפש מחרוזות של אותיות רישיות או קטנות באמצעות grep

באמצעות grep אתה יכול לקבוע אילו שורות בקובץ יש תווים באותיות גדולות באמצעות התחביר הבא:

grep '[AZ]'

סוגריים מרובעים [] מאפשרים לך לקבוע את טווח התווים. בדוגמה לעיל הוא מתאים לכל תו שהוא בין A ו- Z.

לכן, כדי להתאים תווים קטנים ניתן להשתמש בתחביר הבא:

grep '[az]'

אם אתה רוצה להתאים רק אותיות ולא nomics או סמלים אחרים אתה יכול להשתמש בתחביר הבא:

grep '[a-zA-Z]'

אתה יכול לעשות את אותו הדבר עם מספרים כדלקמן:

grep '[0-9]' שם קובץ

08 מתוך 09

מחפש דפוסים חוזרים באמצעות grep

ניתן להשתמש בסוגריים מסולסלים {} כדי לחפש דפוס חוזר.

נניח שיש לך קובץ עם מספרי טלפון כדלקמן:

אתה יודע את החלק הראשון של המספר צריך להיות שלוש ספרות ואתה רוצה למצוא את השורות שאינן תואמות דפוס זה.

מהדוגמה הקודמת אתה יודע ש- [0-9] מחזיר את כל המספרים בקובץ.

במקרה זה אנו רוצים את השורות המתחילות בשלוש ספרות ואחריו מקף (-). תוכל לעשות זאת באמצעות התחביר הבא:

grep "^ [0-9] [0-9] [0-9] -" מספרים

כפי שאנו יודעים מהדוגמאות הקודמות, קראט (^) פירושו שהקו חייב להתחיל בדפוס הבא.

[0-9] יחפש מספר כלשהו בין 0 ל -9. כיוון שהדבר כלול שלוש פעמים הוא מתאים לשלושה מספרים. לבסוף יש מקף כדי לציין כי מקף חייב להצליח את שלושת המספרים.

באמצעות סוגריים מסולסלים אתה יכול לעשות את החיפוש קטן יותר כדלקמן:

grep "^ [0-9] \ {3 \} -" מספרים

קו נטוי בורח {סוגר כך שזה עובד כחלק מהביטוי הרגיל אבל בעצם מה זה אומר הוא [0-9] {3} כלומר כל מספר בין 0 ל 9 שלוש פעמים.

סוגריים מתולתל יכול לשמש גם כדלקמן:

{5,10}

{5,}

{5,10} פירושו שהדמות המבוקשת חייבת להיות חוזרת לפחות 5 פעמים אך לא יותר מ -10, ואילו {5,} פירושו שהדמות חייבת להיות חוזרת על עצמה לפחות 5 פעמים, אך היא יכולה להיות יותר מזה.

09 של 09

שימוש בפלט מפקודות אחרות באמצעות grep

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

דוגמה מצוינת לכך היא שימוש בפקודה PS אשר מפרטת תהליכים פעילים.

לדוגמה, הפעל את הפקודה הבאה:

נ.ב. -ef

כל התהליכים הפועלים במערכת שלך יוצגו.

באפשרותך להשתמש ב- grep כדי לחפש תהליך ריצה מסוים באופן הבא:

ps -ef grep

סיכום

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