כאשר אנו מפעילים פקודות מסוימות ב- Unix/Linux לקריאה או עריכה של טקסט מתוך מחרוזת או קובץ, אנו מנסים לרוב לסנן פלט לקטע נתון נתון. כאן שימושי השימוש בביטויים רגילים.
קראו גם:10 מפעילי שרשרת לינוקס שימושיים עם דוגמאות מעשיות
ניתן להגדיר ביטוי רגיל כמחרוזות המייצגות מספר רצף תווים. אחד הדברים החשובים ביותר בביטויים רגילים הוא שהם מאפשרים לך לסנן את הפלט של פקודה או קובץ, לערוך קטע של קובץ טקסט או תצורה וכן הלאה.
ביטויים רגילים מורכבים מ:
(.)
הוא תואם כל תו יחיד למעט שורה חדשה.(*)
הוא תואם לאפס או יותר קיומים של הדמות המיידית שלפניו.[ תווים) ]
הוא תואם כל אחד מהתווים המצוינים בתווים, אפשר להשתמש גם במקף (-)
מתכוון למגוון דמויות כגון [א-ו]
, [1-5]
, וכולי.^
הוא תואם את תחילת השורה בקובץ.$
תואם את סוף השורה בקובץ.\
היא דמות בריחה.על מנת לסנן טקסט, יש להשתמש בכלי לסינון טקסט כגון awk. אתה יכול לחשוב על awk כשפת תכנות משל עצמו. אבל בהיקפו של מדריך זה לשימוש awk, נכסה אותו ככלי סינון פשוט של שורת פקודה.
התחביר הכללי של awk הוא:
# awk 'קובץ' קובץ.
איפה 'תַסרִיט'
היא קבוצת פקודות המובנות על ידי awk והם מבוצעים על קובץ, שם קובץ.
הוא פועל על ידי קריאת שורה נתונה בקובץ, יוצר עותק של השורה ולאחר מכן מבצע את התסריט על השורה. זה חוזר על עצמו בכל השורות בקובץ.
ה 'תַסרִיט'
נמצא בצורה '/ דפוס/ פעולה'
איפה תבנית הוא ביטוי רגיל ו פעולה מה awk יעשה כשהוא ימצא את הדפוס הנתון בשורה.
בדוגמאות הבאות נתמקד בדמויות המטא עליהן דנו לעיל תחת התכונות של awk.
הדוגמה שלהלן מדפיסה את כל השורות בקובץ /etc/hosts מכיוון שלא ניתנת תבנית.
# awk '//{print} '/etc/hosts.
אני הדוגמה למטה, דפוס מארח מקומי
ניתן, כך awk יתאים לקו שיש מארח מקומי בתוך ה /etc/hosts
קוֹבֶץ.
# awk '/localhost/{print} ' /etc /hosts
ה (.)
יתאים מחרוזות המכילות לוק, מארח מקומי, localnet בדוגמה למטה.
זאת אומרת * l כמה_סינגל_ תו c *.
# awk '/l.c/{print} ' /etc /hosts.
הוא יתאים למחרוזות המכילות מארח מקומי, localnet, שורות, בעל יכולת, כמו בדוגמה שלהלן:
# awk '/l*c/{print} ' /etc /localhost.
אתה גם תבין את זה (*)
מנסה להשיג לך את ההתאמה הארוכה ביותר שהוא יכול לזהות.
תן להסתכל על מקרה שמדגים זאת, קח את הביטוי הרגיל t*t
מה שאומר מחרוזות התאמה שמתחילות באות t
ולסיים עם t
בשורה למטה:
זהו tecmint, שבו אתה מקבל את ההדרכות הטובות ביותר, הדרכים, מדריכים, tecmint.
תקבל את האפשרויות הבאות בעת השימוש בתבנית /t*t/
:
זה t. זה טמינט. זה tecmint, שבו אתה מקבל t. זה tecmint, שבו אתה מקבל את הטוב ביותר t. זהו tecmint, שבו אתה מקבל את ההדרכות הטובות ביותר, כיצד. זה tecmint, שבו אתה מקבל את ההדרכות הטובות ביותר, איך לעשות, מדריכים, t. זהו tecmint, שבו אתה מקבל את ההדרכות הטובות ביותר, איך לעשות, מדריכים, tecmint.
וכן (*)
ב /t*t/
תו כללי מאפשר ל- awk לבחור באפשרות האחרונה:
זהו tecmint, שבו אתה מקבל את ההדרכות הטובות ביותר, הדרכים, מדריכים, tecmint.
קח לדוגמא את הסט [al1]
, כאן awk יתאים לכל המחרוזות המכילות אופי א
אוֹ l
אוֹ 1
בשורה בקובץ /etc/hosts.
# awk '/[al1]/{print} ' /etc /hosts.
הדוגמה הבאה תואמת מחרוזות שמתחילות באחת מהן ק
אוֹ ק
בא אחריו ט
:
# awk '/[Kk]T/{print} ' /etc /hosts
הבנת דמויות עם awk:
[0-9]
פירושו מספר בודד[א-ז]
פירושו להתאים אות אחת קטנה[א-ז]
פירושו להתאים אות אחת גדולה[a-zA-Z]
פירושו להתאים אות אחת[a-zA-Z 0-9]
פירושו להתאים אות אחת או מספר אחדבואו נסתכל על דוגמה להלן:
# awk '/[0-9]/{print} ' /etc /hosts
כל השורה מהקובץ /etc/hosts להכיל מספר בודד לפחות [0-9]
בדוגמה למעלה.
הוא תואם את כל השורות המתחילות בתבנית המסופקת כמו בדוגמה שלהלן:
# awk '/^fe/{print} ' /etc /hosts. # awk '/^ff/{print} ' /etc /hosts.
הוא תואם את כל השורות המסתיימות בתבנית המסופקת:
# awk '/ab$/{print} ' /etc /hosts. # awk '/ost$/{print} ' /etc /hosts. # awk '/rs$/{print} ' /etc /hosts.
זה מאפשר לך לקחת את הדמות שעוקבת אחריה כמילה מילולית כלומר להתייחס אליה בדיוק כפי שהיא.
בדוגמה למטה, הפקודה הראשונה מדפיסה את כל השורה בקובץ, הפקודה השנייה לא מדפיסה דבר מכיוון שאני רוצה להתאים לשורה שיש בה $25.00, אך אין שימוש בדמות בריחה.
הפקודה השלישית נכונה מכיוון ששימש תו בריחה לקריאה $ כמו שזה.
# awk '//{print} 'deals.txt. # awk '/$25.00/{print} 'deals.txt. # awk '/\$25.00/{print} 'deals.txt.
זה לא הכל עם awk כלי סינון שורת הפקודה, הדוגמאות למעלה והפעולות הבסיסיות של awk. בחלקים הבאים נתקדם כיצד להשתמש בתכונות מורכבות של awk. תודה שקראתם על כל התוספות או ההבהרות, שלחו תגובה בסעיף ההערות.