פתח את הכוח של אלה שקילות של grep בווינדוס

נמאס לך משימוש בכלי חיפוש ישנים על המחשב שלך, כמו grep? למה להסתפק? ישנם רבים מהשקפים הדומים ל-grep ב-Windows שיכולים לעזור לך לחפש בדיוק את מה שאתה מחפש.

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

נשמע מעניין? תמשיך לעקוב ותחבר עם כלי חיפוש עוצמתי!

דרישות מוקדמות

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

  • A Window machine – This tutorial uses Windows 10 PC, but any version of Windows will suffice.
  • PowerShell – מדובר בגרסה 7.2.8. של PowerShell במדריך זה.
  • scoop – מדובר בגרסה 0.3.1. של scoop במדריך זה.

מציאת מחרוזות טקסט ספציפיות (findstr) בקבצים

היכולת לזהות מיד מחרוזות טקסט ספציפיות (עם דפוסים מסוימים) בקובץ עוזרת הרבה לתהליך העבודה שלך. אבל איך? פנה לתוך כלי השורת פקודה findstr ב-Windows, המאפשר לך לחפש מחרוזות טקסט ספציפיות בתוך קבצים.

findstr נהוג לשימוש כמבנה מחליף של grep ב-Windows, מאחר ויש לו פונקציות דומות לפקודת Unix grep. מהם היתרונות של שימוש ב־findstr? דוגמה אחת היא שהוא מובנה בכל מערכת ההפעלה (OS) של Windows – אין צורך בתוכנה נוספת.

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

צור קובץ טקסט עם עורך הטקסט המועדף עליך, קרא לו notes.txt, ומלא את התוכן הבא לקובץ.

Hello, world. This is an example of a text file.
I am writing some notes in this file.
Here are some keywords to search for: apple banana cherry.

כעת, פתח את PowerShell כ־מנהל והפעל את הפקודה הבאה כדי למצוא מחרוזות (findstr) נגד דפוס החיפוש ("תפוח") בקובץ notes.txt.

? ל־findstr יש הרבה פרמטרים שניתן להשתמש בהם כדי להתאים אישית את החיפוש. אך במדריך זה, תשקול כמה מהפרמטרים השווים ביותר בעת חיפוש מחרוזות בקבצים.

findstr "apple" "C:\\myfiles\\notes.txt
Searching text strings with the word apple in it

? אולי אתה מחפש מחרוזות במספר קבצים. אם כן, ציין את נתיבי הקבצים מופרדים ברווחים, כמו בדוגמה הבאה: findstr parameters "תבנית" "C:\\נתיב\\ל\\קובץ1.txt" "C:\\נתיב\\ל\\קובץ2.txt"

מציאת מחרוזות התואמות לתבנית ספציפית או ליטרלי.

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

הוספת הפרמטר /c לפקודת findstr מועילה במקרים הבאים, אך לא מוגבלת להם:

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

כדי לראות כיצד הפרמטר /c פועל בפועל, עקוב אחר השלבים האלה:

1. הרץ את פקודת findstr למטה כדי לחפש את המחרוזת הממשית (/c) banana cherry בקובץ *notes.txt*.

findstr /c:"banana cherry" "C:\myfiles\notes.txt"

בפלט למטה, פקודת findstr מחזירה רק שורות המכילות את המחרוזת המדויקת banana cherry עם רווח בין שני המילים.

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

Searching for a literal string

2. לאחר מכן, הוסף את השורה הבאה לקובץ notes.txt, ושמור את השינויים.

עכשיו יש ישנם שני שורות בקובץ notes.txt שלך עם מחרוזת "hello". אחת באותיות קטנות (hello, world.), ואחת עם אות ראשונה באות גדולה (Hello, world.).

hello, world.

3. כעת, הפעל את כל הפקודות למטה כדי לחפש את המחרוזת hello, world, או Hello, world בקובץ notes.txt.

# תבנית באותיות קטנות
findstr /c:"hello, world" "C:\myfiles\notes.txt"
# עם האות הגדולה 'H'
findstr /c:"Hello, world" "C:\myfiles\notes.txt"

שים לב שלמרות שישנם שתי שורות שמכילות את המחרוזת 'hello, world' בקובץ notes.txt, אתה מקבל רק שורה אחת של מחרוזת.

הפרמטר /c אומר לפקודת findstr להדפיס שורות שמכילות את מחרוזת 'hello, world' באותיות קטנות או עם האות 'H' באות גדולה.

Searching for the ‘hello, world’ literal string with the lowercase ‘h’

4. לבסוף, הפעל את פקודת findstr לחיפוש אחר מחרוזות שמכילות את התבנית hello בקובץ notes.txt ובו זמנית מתעלם מהאותיות הגדולות והקטנות (/i).

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

findstr /i "hello" "C:\myfiles\notes.txt"
Searching strings while Ignoring the letter case

מציאת מחרוזות מסוימות בקובצים ובספריות

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

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

הרץ את הפקודה הבאה כדי לחפש (/s) בתיקייה הנוכחית ובתתי-תיקיותיה (/s) את כל הקבצים (*.*) שמכילים את מחרוזת המילים system, מתעלמים מהאותיות הקטנות (-i)

שים לב שהפקודה הזו חיפוש בקבצים שמכילים את מחרוזת המילים system כמילה שלמה ולא את אלה שהיא חלק ממילים גדולים יותר, כמו systematic או systemize.

findstr /s /i system *.*

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

Finding specified strings within files, directories, and subdirectories

חיפוש מחרוזות באמצעות פקודת Select-String

עד כה, ראינו שהפקודה findstr עובדת מצוין בחיפוש מחרוזות, אך פקודת ה־Select-String אינה יכולה להישאר בצד. פקודת זו היא המקבילה של grep בחלונות ומאפשרת לך לחפש דפוסי טקסט מסוימים בקבצים ובמחרוזות.

פקודת Select-String מיועדת ליעילות, מאפשרת לך לחפש מהר בכמויות גדולות של טקסט ותומכת ב־ביטויים רגולריים (regexes). כתוצאה מכך, פקודה זו מאפשרת לך לחפש גם דפוסים מורכבים יותר מאשר findstr.

כדי לראות כיצד פקודת ה־Select-String פועלת, עקוב אחרי השלבים האלה:

1. פתח את קובץ notes.txt תחילה, הוסף את השורות הבאות ושמור את השינויים.

הוספת שורות אלו היא הכנה להדגמת כיצד פקודת ה־Select-String עוסקת בהבחנת אותיות בשלבים הבאים.

Apple
APPLE
ApplE

2. לאחר מכן, הפעל את הפקודה הבאה כדי לחפש את המחרוזת apple בקובץ notes.txt.

Select-String -Pattern "apple" -Path "C:\myfiles\notes.txt"

מטה, ישנן שורות מרובות המכילות את המחרוזת 'apple' אך בהבחנה בין רישיות האותיות מכיוון שפקודת ה־Select-String אינה תלויה ברישיות האותיות. אך הדבר הטוב הוא שניתן לזהות ולאמת בקלות את המחרוזות שהתאימו מאחר והן מודגשות.

Searching for a string in a text file

? אולי תרצה להשתמש בהתאמת מחרוזת פשוטה במקום התאמת regex. אם כך, הוסף את הפרמטר -SimpleMatch, כפי שמוצג למטה, ואל דאגה לתחביר regex ותווים מיוחדים. Select-String 'APPLE' "C:\\myfiles\\notes.txt" -SimpleMatch

3. כעת, הפעל את הפקודה למטה כדי לחפש את APPLE בקובץ notes.txt עם הפעלת כיוון בין רישיות האותיות (-CaseSensitive). הפרמטר -CaseSensitive מתאים לדיוק בחיפוש.

Select-String -Pattern 'APPLE' -Path "C:\myfiles\notes.txt" -CaseSensitive

כפי שתראה למטה, המחרוזת התאימה היחידה נמצאת עם רישיות האותיות המדויקת שציינת (APPLE).

Searching for a string with case sensitivity enabled

4. לבסוף, הפעל את הפקודה למטה באמצעות regex כדי לחפש את התבנית '\?' (סימן שאלה) בכל קבצי הטקסט (*.txt) בתיקייה $PSHOME\en-US. regex מאפשר חיפוש אחר תבניות מורכבות יותר.

Select-String -Path "$PSHOME\en-US\*.txt" -Pattern '\?’

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

Searching for a string (a question mark) in files using regex

שימוש ב־ripgrep (rg) כמחליף ל־grep ב-Windows

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

אך להפרד מ־findstr ו־cmdlet של Select-String, rg אינו מותקן ב-Windows שלך כברירת מחדל.

כדי להשתמש ב־rg כמחליף ל־grep ב-Windows:

1. הפעל את הפקודה scoop הבאה כדי להתקין את ripgrep במערכת שלך. scoop install ripgrep

scoop install ripgrep
Installing ripgrep on your system

2. לאחר מכן, הפעל את הפקודה rg הבאה כדי לוודא את גרסת ההתקנה של rg.

rg --version

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

Verifying rg is installed

3. הפעל את הפקודה rg הבאה כדי לחפש את המחרוזת apple בקובץ notes.txt.

rg apple C:\myfiles\notes.txt

הפלט מציג כל שורה בקובץ notes.txt שמכילה את המחרוזת apple, כפי שמוצג למטה.

שים לב שהפלט דומה לפלט של cmdlet של Select-String, אך במקום הדגשה, rg משנה את צבע המחרוזת ומספר השורה שלה להבדל מהיר.

Searching for the string ‘apple’ in a text file

4. עכשיו, הפעל את הפקודה הבאה באמצעות regex כדי לחפש מחרוזות בקובץ notes.txt.

התבנית שלמטה משתמשת בגבולות מילים (\b) ואומרת ל־rg לחפש שורות של מחרוזות שמכילות מילה שמתחילה באות 's' ומסתיימת באות 'e' (s\w+e).

rg "\bs\w+e\b" "C:\myfiles\notes.txt"
Search for strings using regex

סינון חיפושים לפי סוג קובץ מסוים

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

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

כדי לסנן את החיפוש לסוגי קבצים ספציפיים, האפשרות --type תעשה את העבודה כך:

1. הריץ את הפקודה rg הבאה כדי לחפש את המחרוזת apple בקבצי טקסט (--type txt) בתיקיית C:\\myfiles.

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

rg "apple" "C:\myfiles" --type txt

הפלט למטה מציג את השורה המכילה את המחרוזת 'apple' ואת שם הקובץ המשויך (notes.txt).

Filtering the search to specific file types

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

<?xml version="1.0" encoding="UTF-8"?>
<fruitBasket>
  <fruit id="1">
    <fruitName>Apple</fruitName>
  </fruit>     
</fruitBasket>

3. כעת, הרץ את הפקודה למציאת מחרוזת apple בכל (*.). הפקודה זו מחפשת רק קבצים בסוגי txt ו-xml כפי שצויין ב--g.

rg "apple" "C:\myfiles" -g '*.{txt,xml}

בברירת מחדל, rg ישמור על התאמה מדויקת לאותיות רישון. כתוצאה מכך, הפלט יציג רק את השורה המכילה את מחרוזת 'apple' בדיוק ואת הקובץ המשוייך.

Filtering searches by a broader range of file types

4. לבסוף, הרץ את הפקודה הבאה, כפי שעשית בשלב השלישי, כדי לחפש את מחרוזת apple בכל הקבצים (*.) שיש להם סיומת txt או xml. אך הפעם, הוסף את האפשרות -i, שאומרת ל-rg להתעלם מהתאמות האותיות.

rg "apple" "C:\myfiles" -g '*.{txt,xml}-i
Filtering searches by a broader range of file types ignoring letter cases

Conclusion

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

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

עכשיו, למה לא לשים את הכישורים החדשים שלך למבחן ולתרגל עם regexes ולהתאים אישית את החיפושים שלך?

Source:
https://adamtheautomator.com/grep-equivalents-in-windows/