במאמר הבא נראה כמה כלי שורת פקודה המשמשים לאיתור מחרוזות או תבניות תואמות בתוך קבצי טקסט. כלים אלה משמשים בדרך כלל יחד עם ביטויים רגולריים, בקיצור REGEX, שהם מחרוזות ייחודיות לתיאור דפוס חיפוש.
ביטויים רגולריים הם דפוסים המשמשים למציאת שילוב מסוים של תווים בתוך מחרוזת טקסט. ביטויים רגולריים מספקים דרך גמישה מאוד לחיפוש או לזהות מחרוזות טקסט. למרות שבשורות הבאות לא נראה ביטויים רגולריים, נשתמש בתבניות או מחרוזות.
חפש מחרוזות או תבניות מהטרמינל
פקודת גרפ
גרפ הוא ראשי תיבות של הדפס ביטוי רגולרי גלובלי. זהו כלי שורת פקודה רב עוצמה שימושי כאשר מחפשים מחרוזת או תבנית ספציפיים בקובץ. עם grep נוכל להשתמש במגוון רחב של פונקציות, כמו אלה שעמית הסביר לנו בבלוג זה לפני זמן מה.
התחביר לשימוש בפקודת grep הוא די פשוט:
grep PATRON [RUTA AL ARCHIVO]
לדוגמא, כדי לחפש את המחרוזת 'אובונטובקובץ שבדוגמה זו נקרא text.txtמבלי לקחת בחשבון את ההבחנה בין אותיות קטנות וקטנות, במסוף (Ctrl + Alt + T) נצטרך לבצע את הפקודה בלבד:
grep -i Ubuntu texto.txt
פיקוד סד
קיצור של צמאון עורך הזרמים. זהו כלי שימושי נוסף למסוף שבעזרתו אנו יכולים לתפעל טקסט בקובץ. Sed מחפש, מסנן ומחליף מחרוזות בקובץ נתון.
הפקודה sed כברירת מחדל מדפיסה את הפלט ב- STDOUT (פלט רגיל). זה מרמז על כך שתוצאת הביצוע מודפסת למסוף במקום להישמר בקובץ.
ניתן להשתמש בפקודה Sed כדלקמן:
sed -OPCIONES COMANDO [RUTA AL ARCHIVO]
לדוגמא, כדי להחליף את כל המופעים של 'לינוקס'בטקסט מאת'לינוקס', הפקודה להשתמש תהיה הבאה:
sed 's/Linux/GnuLinux/g' texto.txt
אם מה שאנחנו מחפשים הוא להפנות את הפלט לקובץ במקום להדפיס אותו למסוףאנו נשתמש בסימן ההפניה באופן הבא:
sed 's/Linux/GnuLinux/g' texto.txt > salida.txt
פלט הפקודה נשמר בקובץ פלט.טקסט במקום להיות מודפס על המסך.
כדי לראות אפשרויות נוספות, אתה יכול התייעץ בדפי האיש:
man sed
אקנה
Ack הוא כלי שורת פקודה מהיר שנכתב בפרל. זה נחשב כתחליף ידידותי לכלי השירות grep, שמייצר תוצאות גם בצורה מושכת ויזואלית.
כדי התקן ack במערכת שלנו נצטרך לבצע במסוף (Ctrl + Alt + T):
sudo apt install ack
הפקודה Ack מחפש בקובץ או בספריה את השורות המכילות את ההתאמה לקריטריוני החיפוש. לאחר מכן הדגיש את המחרוזת המתאימה. לכלי זה יש את היכולת להבחין בין קבצים על פי ההרחבות שלהם.
התחביר של פקודת Ack יהיה משהו כמו הבא
ack [OPCIONES] PATRÓN [RUTA AL ARCHIVO]
לדוגמא, כדי לחפש את המונח לינוקס בקובץ, נצטרך לבצע:
ack Linux texto.txt
כלי החיפוש הוא די חכם אם המשתמש אינו מספק קבצים או ספריות, הוא מחפש בספרייה הנוכחית ובספריות המשנה אחר תבנית החיפוש.
בדוגמה הבאה, אין קובץ או ספריה. Ack מזהה באופן אוטומטי את הקובץ הזמין בספריה ומחפש את דפוס ההתאמה:
ack Linux
ריפגרפ
ריפגרפ הוא כלי עזר בין פלטפורמות לחיפוש דפוסי ביטוי רגולרי. זה מהיר יותר מכל כלי החיפוש שהוזכרו לעיל, והוא מחפש בספריות רקורסיבית אחר דפוסים תואמים. זה גם מאפשר לך לחפש סוגי קבצים ספציפיים. כברירת מחדל, ripgrep תדלג על קבצים בינאריים וקבצים / ספריות מוסתרים.
כדי התקן ripgrep במערכת, כל שעליך לעשות הוא להריץ את הפקודה הבאה במסוף (Ctrl + Alt + T):
sudo apt install ripgrep
התחביר לשימוש ב- ripgrep די פשוט:
rg [OPCIONES] PATRÓN [RUTA AL ARCHIVO]
אם היינו רוצים לחפש את הרשת 'לינוקסבקבצים הממוקמים בספריה הנוכחית, נצטרך לבצע את הפקודה בלבד:
rg Linux
כדי לראות אפשרויות נוספות, משתמשים יכולים להשתמש דפי גבר:
man rg
מחפש כסף
כדי התקן כלי זהבאובונטו נצטרך לפתוח רק מסוף (Ctrl + Alt + T) ולכתוב את הפקודה:
sudo apt install silversearcher-ag
Silver Searcher הוא כלי חיפוש קוד פתוח חוצה פלטפורמות הדומה ל- ack אך עם דגש על מהירות. זה מקל על מציאת מחרוזת ספציפית בתוך קבצים בזמן הקצר ביותר האפשרי. התחביר לשימוש יהיה:
ag OPCIONES PATRÓN_DE_BÚSQUEDA /ruta/al/archivo
לדוגמא, כדי לחפש 'לינוקס'בקובץ text.txt, נצטרך לכתוב במסוף (Ctrl + Alt + T):
ag Linux texto.txt
כדי לראות אפשרויות נוספות אנו יכולים להתייעץ עם דפי גבר:
man ag
אלה הם רק חלק מכלי שורת הפקודה הנפוצים ביותר לחיפוש, סינון ומניפולציה של טקסט בלינוקס.