כיצד לא לכלול מילה עם grep
תוכן עניינים:
כלי שורת הפקודה grep שימושי מאוד לחיפוש בנתוני טקסט אחר שורות וקטעים התואמים מחרוזת, תו, מילה או ביטוי רגולרי מוגדרים. בעוד שרוב השימושים ב-grep הם עבור מיון נתונים עבור התאמות תחביר, מה אם אתה רוצה לא לכלול מילה או מחרוזת עם grep במקום זאת? אי הכללת התאמות שורות עם grep שימושית באותה מידה כמו מציאת והדפסת התאמות ב-grep, אז בואו נסקור כיצד לא לכלול התאמות מחרוזות ולא לכלול מילים עם grep.
ברור שתרצה לקבל קצת ניסיון בשורת הפקודה וחשיפה ל-grep כדי למצוא את זה שימושי. אם אתה רוצה לעקוב, אתה יכול לפתוח את אפליקציית Terminal ולנסות אותה בעצמך. מכיוון ש-grep הוא כלי עזר אגנסטי של מערכת ההפעלה, אתה יכול להשתמש בטריק של אי הכללה ב-Mac OS, Linux, unix, או כל דבר אחר שיש לך שמשתמש ב-grep.
איך לא לכלול מילה אחת עם grep
הדרך הפשוטה ביותר להחריג שורות עם התאמה של מחרוזת או תחביר היא באמצעות grep ודגל -v.
לדוגמה, נניח שאנו משתמשים ב-cat כדי להדפיס קובץ בשורת הפקודה, אך אנו רוצים לא לכלול את כל השורות הכוללות את המונח "ThisWord", ואז התחביר ייראה כך:
cat example.txt | grep -v ThisWord"
הפלט יהיה קובץ הטקסט example.txt אך לא כולל כל שורה המכילה התאמה של מחרוזת ל-"ThisWord".
תוכל גם להשתמש ב-grep ישירות על קבצים ולא לכלול התאמות שורות על סמך מילים או תחביר, כמו כך:
"grep -v ThisWord>"
השתמש במה שעובד הכי טוב עבור זרימת העבודה הספציפית שלך.
איך לא לכלול מחרוזות או מילים מרובות עם grep
עכשיו כשאתה יודע איך לא לכלול התאמות למילה בודדת, השאלה המתבקשת הבאה היא על אי הכללה של מילים מרובות עם grep. זה פשוט באותה מידה, ויש כמה דרכים שונות להשיג זאת באמצעות דגל -v כמו גם דגל -e.
ראשית ניקח את הדוגמה שלעיל של שימוש ב-cat בקובץ שהוכנס ל-grep, ולא נכלול את כל השורות המתאימות לשתי מילים; "Word1" ו-"Word2", זה ייראה כך:
"cat example.txt | grep -v -e Word1 -e Word2"
כל השורות המכילות "Word1" או "Word2" לא ייכללו מהתוצאות המודפסות.
תוכל גם להשתמש ב-grep ישירות על קבצים בדיוק כמו קודם:
"grep -v -e Word1 -e Word2 example.txt"
גישה נוספת היא להפריד מה לא לכלול עם grep על ידי שימוש בצינור כדי להפריד כל התאמה, כמו כך:
grep -Ev word1|word2 example.txt"
אם תבדוק אחת מהאפשרויות האלה בקובץ טקסט לדוגמה, תגלה שהפלט זהה ללא קשר לגישה שאתה נוקט, כל אחת לא כוללת שורות הכוללות את הביטויים הממוקדים, התחביר, המילים או התאמת טקסט.
מעולה, תראה לי דוגמה שימושית לאי הכללת נתונים עם grep!
לדוגמה מעשית שמשתמשי Mac מתקדמים עשויים למצוא מועילה, נוכל להשתמש באי הכללת grep בעת הדפסה ושאילתה של היסטוריית שורת הפקודה כדי למצוא פקודות שבוצעו בעבר כדי למצוא התאמות של ברירת מחדל, אך לא לכלול כמה מחרוזות ברירת המחדל שנבחרו תְפוּקָה.
בדוגמה כאן נדפיס היסטוריית פקודות עבור התאמות מחרוזות ברירת המחדל, אך לא נכלול כל התאמה הקשורה ל-iTunes כפי שהוגדר על ידי "com.apple.itunes":
"history |grep ברירת מחדל לכתוב |grep -v -e com.apple.itunes"
אז אם עקבת אחריך, זה ידווח על כל הביצועים ההיסטוריים של הפקודה "כתוב ברירת מחדל", אך לא כולל כל מה שקשור לאפליקציית iTunes. נחמד הא?
אם יש לך שימושים שימושיים במיוחד באי הכללת התאמות עם grep, שתף אותם איתנו בתגובות למטה! ואם נהנית מהמאמר הזה, כמעט בוודאות תרצה לדפדף במאמרי שורת הפקודה הרבים שלנו כאן, שם יש עוד הרבה מה ללמוד!