צריך לדעת איך להשתמש ב- PowerShell כדי לקרוא קובץ טקסט ולהחליף טקסט? זה מה שאנחנו קוראים לזה ב- PowerShell Read-Text File.
אל תחפש יותר! פוסט הבלוג הזה הוא בשבילך. עד סוף הפוסט, אני אראה לך פונקציה שבניתי שתשפר את חייך הרבה.
להחלפת טקסט בקובץ באמצעות PowerShell זה תהליך של שלוש שלבים.
- קריאת הקובץ
- מציאת והחלפת המחרוזת
- כתיבת השינויים לקובץ.
קריאת הקובץ
תצטרך תחילה לקרוא את הקובץ. נבנה תחילה קובץ עם פקודת ה- Set-Content
כך שיהיה לנו קובץ לעבוד עם.
כדי לקרוא את הקובץ הזה, ניתן להשתמש בפקודת Get-Content
. תוכל לקרוא את הקובץ על ידי מתן נתיב קובץ טקסט לפרמטר Path
כפי שמוצג למטה.
מציאת והחלפת המחרוזת
עכשיו שיש לנו את תוכן הקובץ בזיכרון במחרוזת, עלינו לחפש ולהחליף את המחרוזת. דרך אחת לעשות זאת היא להשתמש באופרטור -replace
. אופרטור זה של PowerShell מוצא מחרוזת ומחליפה אותה באחרת.
על ידי שימוש בתוכן הקובץ המופיע בדוגמה, ניתן לספק את מחרוזת החיפוש foo עם מחרוזת ההחלפה bar שכן תעשה את תוכן הקובץ foo foo baz כעת.
כתיבה לקובץ
עכשיו שיש לנו את תוכן הקובץ החדש שנשמר ב-$newContent
, נוכל כעת לכתוב את התוכן הזה בחזרה לקובץ. אחת הדרכים לעשות זאת היא להשתמש בפקודה Set-Content
.
הפקודה Set-Content
מחליף את כל תוכן הקובץ ומשווה לו ערך חדש.
כשתקרא עכשיו את הקובץ C:\file.txt עם Get-Content
, תראה שהוא מכיל כעת את התוכן החדש.
טיפול בטיפולי קבצים פתוחים
השלבים שעברת עד כה עובדים… ברוב המקרים. אך, תגלה שבעולם האמיתי, זה לא תמיד יתרחש כך.
תגלה שמדי פעם עליך להתמודד עם קבצים שפתוחים בפועל על ידי PowerShell עצמו. זה מונע ממך לכתוב את התוכן החדש בחזרה לקובץ.
כדי לטפל במצב הזה של יידיד קבצים פתוחים, יצרתי תהליך פשוט שמאפשר לך ליצור קובץ טקסט זמני על הדיסק תחילה עם התוכן החדש, להסיר את הקובץ המקורי ולאחר מכן לשנות את שם הקובץ הזמני.
כאן דוגמה לאיך זה עובד:
למטה יש דוגמה לפונקציה שבניתי בשם Find-InTextFile
שמשתמשת בשיטה זו בשילוב עם היכולת למצוא (ולא להחליף) טקסט בקובץ.
פונקציה זו גם משתמשת בתחביר הביטויים הרגולריים היעילים יותר למציאת מחרוזות. תגלה שבאמצעות ביטויים רגולריים ניתן לבצע חיפושים גמישים יותר באמצעות תווים מיוחדים כמו גרשיים, תווים מיוחדים ועוד.
אתה יכול גם לראות מטה שאני משתמש בלולאת foreach כדי לעבד קבצים מרובים בו זמנית. זה מועיל אם יש לך המון קבצים לעיבוד.
משאבים
למידע נוסף על פקודת Set-Content
ראה Set-Content: דרך PowerShell לכתיבה לקובץ או דרך אלטרנטיבית לכתיבת תוכן לקובץ, פקודת Out-File
.
Source:
https://adamtheautomator.com/powershell-read-text-file/