Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows Server

การใช้ Grep ใน PowerShell ด้วยคำสั่ง Select-String

ใน Linux/Unix คำสั่ง grep ใช้สำหรับค้นหาข้อความ (สตริง) หรือข้อผิดพลาดในไฟล์บันทึก (log file) Grep ช่วยให้คุณค้นหา/เลือกข้อมูลใดๆ ในเอาต์พุตของคำสั่งอื่น:

command | grep search

ใน PowerShell คุณสามารถใช้คำสั่ง Select-String เพื่อค้นหาสตริงข้อความในไฟล์

เช่น คำสั่งต่อไปนี้แสดงทุกบรรทัดที่มี ERROR ในไฟล์ข้อความหรือ stdout:

Select-String -Path c:\tmp\makeapp_sxtracesxs.txt -Pattern "ERROR"

คำสั่งนี้แสดงจำนวนบรรทัดที่มีข้อความที่คุณค้นหาและค่าของมัน

หากคุณต้องการค้นหาสตริงในไฟล์ TXT ทั้งหมดในไดเรกทอรีเฉพาะ ให้รันคำสั่งด้านล่าง:

Select-String -Path c:\tmp\*.txt -Pattern "ERROR"

คุณสามารถใช้คำสั่งนี้หากต้องการค้นหาทุกไฟล์ในโฟลเดอร์ ตัวอย่างเช่น คำสั่งนี้อาจมีประโยชน์สำหรับการค้นหาบันทึกการขนส่ง (SMTP) และบันทึกการติดตามข้อความบน Exchange Server

โดยใช้ตัวเลือก Exclude และ Include คุณสามารถรวมหรือตัดไฟล์บางไฟล์สำหรับการค้นหาได้ คำสั่งต่อไปนี้จะค้นหาผ่านไฟล์ TXT และ LOG ทั้งหมดที่ไม่มี copy ในชื่อของพวกเขา:
$path = "c:\tmp\*"
Select-String -Path $path -Pattern "ERROR" -Include "*.txt","*.log" -Exclude "*copy*"

ตัวอย่างก่อนหน้านี้ค้นหาข้อความในไดเรกทอรีที่ระบุเท่านั้น หากต้องการค้นหาไฟล์ในไดเรกทอรีย่อยแบบเรียกซ้ำ (recursively) ให้ใช้คำสั่ง Get-ChildItem:

Get-ChildItem -Path 'c:\tmp\' -Recurse -include "*.mp3","*.avi" -ErrorAction SilentlyContinue | Select-String -SimpleMatch "ERROR","WARNING"