ค้นหาเว็บไซต์

จะตรวจสอบว่าไฟล์มีสตริงใน 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 นี้ ฉันได้อธิบายพร้อมตัวอย่างวิธีตรวจสอบว่าไฟล์มีสตริงหรือไม่ โดยใช้วิธีด้านล่าง:

  1. การใช้ Select-String Cmdlet
  2. ตรวจสอบสตริงในหลายไฟล์ใน PowerShell
  3. การใช้สวิตช์ -เงียบ
  4. ตรวจสอบว่ามีสตริงอยู่ด้วย -match Operator หรือไม่
  5. ใช้ .Contains() วิธีการ
  6. การใช้โอเปอเรเตอร์ที่เหมือนกับไวด์การ์ด
  7. การใช้นิพจน์ทั่วไป

บทความที่เกี่ยวข้อง