จะตรวจสอบว่าไฟล์มีสตริงใน PowerShell ได้อย่างไร
ขณะทำงานกับไฟล์ใน PowerShell คุณอาจได้รับข้อกำหนดในการตรวจสอบว่าไฟล์มีสตริงที่ระบุหรือไม่ PowerShell มีวิธีการต่างๆ ในการตรวจสอบว่าไฟล์มีสตริงหรือไม่ ให้เราตรวจสอบแต่ละวิธีด้วยตัวอย่าง
ในการตรวจสอบว่าไฟล์มีสตริงเฉพาะใน PowerShell หรือไม่ คุณสามารถใช้ Select-String cmdlet พร้อมด้วยพารามิเตอร์ -Pattern ที่ระบุคำค้นหาของคุณ และใช้พารามิเตอร์ -Path เพื่อกำหนดตำแหน่งของไฟล์ สำหรับการส่งคืนจริงหรือเท็จอย่างง่าย ให้เพิ่มสวิตช์ -Quiet ตัวอย่างเช่น: $containsString=Select-String -Path “C:\MyFolder\MyFile.txt” -Pattern “searchTerm” -Quiet จะส่งกลับ True หากพบ “searchTerm” มิฉะนั้นจะเป็นเท็จแข็งแกร่ง>
ฉันใช้โค้ด Visual Studio เพื่อรันสคริปต์ PowerShell ทั้งหมด คุณยังสามารถใช้ Windows PowerShell ISE เพื่อดำเนินการตัวอย่างได้
และสำหรับแต่ละวิธี ฉันจะใช้ไฟล์ .txt
ตรวจสอบว่าไฟล์มีสตริงใน PowerShell หรือไม่
ตอนนี้ให้เราตรวจสอบวิธีการต่างๆของ PowerShell เพื่อตรวจสอบว่าไฟล์มีสตริงเฉพาะหรือไม่
1. การใช้ Select-String Cmdlet
Select-String cmdlet ใน PowerShell คล้ายกับคำสั่ง grep ใน Unix หรือ Linux คำสั่งนี้คุณสามารถใช้เพื่อค้นหารูปแบบข้อความภายในไฟล์ ใช้การจับคู่นิพจน์ทั่วไปเพื่อค้นหารูปแบบข้อความในสตริงอินพุตและไฟล์
ต่อไปนี้เป็นตัวอย่างง่ายๆ ของวิธีใช้ Select-String ใน PowerShell เพื่อตรวจสอบว่าไฟล์มีสตริงเฉพาะหรือไม่
Select-String -Path "C:\MyFolder\MyFile.txt" -Pattern "powershellfaqs"คำสั่งนี้ค้นหาสตริง “powershellfaqs” ในไฟล์ “MyFile.txt” ที่อยู่ใน “C:\MyFolder” หากพบสตริง Select-String จะส่งคืนบรรทัดที่มีสตริง พร้อมด้วยข้อมูลบริบทเพิ่มเติมบางส่วน
ภาพหน้าจอด้านล่างแสดงว่าไฟล์นี้มีสตริงสองครั้งและแสดงทั้งสองบรรทัด
2. ตรวจสอบสตริงในหลายไฟล์ใน PowerShell
บางครั้ง คุณอาจต้องการตรวจสอบการต่อยในไฟล์ทั้งหมดในโฟลเดอร์ ซึ่งทำได้ง่ายใน PowerShell
หากต้องการตรวจสอบสตริงที่เฉพาะเจาะจงในหลายไฟล์ใน PowerShell คุณสามารถรวม Get-ChildItem กับ Select-String:
Get-ChildItem -Path "C:\MyFolder\*.txt" | Select-String -Pattern "powershellfaqs"สคริปต์นี้ค้นหา “powershellfaqs” ในไฟล์ข้อความทั้งหมดภายใน “C:\MyFolder” โดยจะแสดงรายการไฟล์ใดๆ ที่มีสตริง พร้อมด้วยบรรทัดที่พบสตริง
3. การใช้สวิตช์ -เงียบ
นี่เป็นอีกวิธีง่ายๆ หากคุณต้องการทราบว่ามีการแสดงสตริงในไฟล์หรือไม่ใน PowerShell มันก็คืนค่าจริงหรือเท็จ
หากคุณเพียงต้องการทราบว่ามีสตริงอยู่ในไฟล์หรือไม่ และไม่จำเป็นต้องดูบรรทัดใดบรรทัดหนึ่ง คุณสามารถใช้สวิตช์ -Quiet ใน PowerShell สิ่งนี้จะส่งกลับค่าบูลีน: True หากพบสตริง และ False มิฉะนั้น
$containsString = Select-String -Path "C:\MyFolder\MyFile.txt" -Pattern "powershellfaqs" -Quiet
$containsString
ที่นี่คุณสามารถดูผลลัพธ์ได้ในภาพหน้าจอด้านล่าง มันจะคืนค่าจริงเมื่อมีการนำเสนอสตริงในไฟล์
4. ตรวจสอบว่ามีสตริงอยู่กับตัวดำเนินการ -match หรือไม่
ต่อไปนี้เป็นอีกวิธีในการตรวจสอบว่ามีสตริงอยู่ภายในไฟล์หรือไม่คือการใช้ตัวดำเนินการ -match ใน PowerShell ขั้นแรก คุณจะต้องอ่านเนื้อหาไฟล์ลงในตัวแปร จากนั้นใช้ -match เพื่อค้นหาสตริง
$content = Get-Content -Path "C:\MyFolder\MyFile.txt"
$containsString = $content -match "powershellfaqs"วิธีการนี้มีประโยชน์เมื่อคุณต้องการดำเนินการเพิ่มเติมกับเนื้อหาไฟล์หลังจากตรวจสอบสตริงแล้ว
5. การใช้ .Contains() วิธีการ
นี่เป็นอีกวิธีง่ายๆ ในการตรวจสอบว่าสตริงมีอยู่ในไฟล์ใน PowerShell หรือไม่ ใน PowerShell คุณสามารถใช้เมธอด .Contains() บนวัตถุสตริงได้ หลังจากอ่านไฟล์ลงในตัวแปรแล้ว คุณสามารถตรวจสอบว่าสตริงมีคำที่คุณระบุหรือไม่
$content = Get-Content -Path "C:\MyFolder\MyFile.txt" -Raw
$containsString = $content.Contains("powershellfaqs")โปรดทราบว่า .Contains() คำนึงถึงขนาดตัวพิมพ์ สำหรับการค้นหาที่ไม่คำนึงถึงตัวพิมพ์ คุณสามารถแปลงทั้งเนื้อหาและคำค้นหาให้เป็นตัวพิมพ์เดียวกันได้โดยใช้ .ToLower() หรือ .ToUpper()
นี่คือสคริปต์ PowerShell สำหรับการค้นหาที่ไม่คำนึงถึงขนาดตัวพิมพ์
$content = Get-Content -Path "C:\MyFolder\MyFile.txt" -Raw
$lowercaseContent = $content.ToLower()
$containsString = $lowercaseContent.Contains("powershellfaqs".ToLower())6. การใช้ตัวดำเนินการแบบเดียวกับไวด์การ์ด
ใน PowerShell ตัวดำเนินการ -like อนุญาตให้คุณใช้ไวด์การ์ดสำหรับการจับคู่รูปแบบ สิ่งนี้มีประโยชน์เมื่อคุณต้องการตรวจสอบว่าสตริงมีคำหรือรูปแบบเฉพาะหรือไม่
$content = Get-Content -Path "C:\MyFolder\MyFile.txt"
$containsString = $content -like "*powershell*"เครื่องหมายดอกจัน * เป็นไวด์การ์ดที่แสดงถึงอักขระจำนวนเท่าใดก็ได้ คำสั่งนี้จะส่งคืน True หากพบ “powershell” ที่ใดก็ได้ในเนื้อหา
7. การใช้นิพจน์ทั่วไป
ใน PowerShell คุณยังสามารถใช้นิพจน์ทั่วไปเพื่อค้นหาการจับคู่รูปแบบได้ คุณสามารถใช้นิพจน์ทั่วไปกับ Select-String ซึ่งช่วยให้คุณสามารถค้นหารูปแบบที่ซับซ้อนภายในข้อความได้
Select-String -Path "C:\MyFolder\MyFile.txt" -Pattern "powershell\w+"
ในตัวอย่างนี้ \w+ คือนิพจน์ทั่วไปที่จับคู่อักขระคำตั้งแต่หนึ่งตัวขึ้นไปที่อยู่หลัง "powershell"
บทสรุป
PowerShell มีหลายวิธีในการตรวจสอบว่าไฟล์มีสตริงหรือรูปแบบเฉพาะหรือไม่ ในบทช่วยสอน PowerShell นี้ ฉันได้อธิบายพร้อมตัวอย่างวิธีตรวจสอบว่าไฟล์มีสตริงหรือไม่ โดยใช้วิธีด้านล่าง:
- การใช้ Select-String Cmdlet
- ตรวจสอบสตริงในหลายไฟล์ใน PowerShell
- การใช้สวิตช์ -เงียบ
- ตรวจสอบว่ามีสตริงอยู่ด้วย -match Operator หรือไม่
- ใช้ .Contains() วิธีการ
- การใช้โอเปอเรเตอร์ที่เหมือนกับไวด์การ์ด
- การใช้นิพจน์ทั่วไป

