Computer >> Máy Tính >  >> Hệ thống >> máy chủ Windows

Grep trong PowerShell bằng Select-String Cmdlet

Trong Linux / Unix, grep lệnh được sử dụng để tìm một văn bản (chuỗi) hoặc các lỗi trong tệp nhật ký. Grep cho phép bạn tìm / chọn bất kỳ dữ liệu nào trong đầu ra của một lệnh khác:

lệnh command | grep search

Trong PowerShell, bạn có thể sử dụng Chuỗi chọn lệnh ghép ngắn để tìm một chuỗi văn bản trong tệp.

Ví dụ:lệnh sau đây hiển thị tất cả các dòng có chứa ERROR trong một tệp văn bản hoặc stdout:

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

Grep trong PowerShell bằng Select-String Cmdlet

Lệnh đã hiển thị số dòng chứa văn bản bạn đang tìm kiếm và giá trị của chúng.

Nếu bạn muốn tìm kiếm một chuỗi trong tất cả TXT các tệp trong một thư mục cụ thể, hãy chạy lệnh bên dưới:

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

Bạn có thể sử dụng lệnh này nếu bạn muốn tìm kiếm thông qua tất cả các tệp trong một thư mục. Ví dụ:lệnh này có thể hữu ích để tìm kiếm nhật ký truyền tải (SMTP) và nhật ký theo dõi tin nhắn trên Exchange Server.

Sử dụng các tùy chọn Loại trừ và Bao gồm, bạn có thể bao gồm hoặc loại trừ các tệp nhất định để tìm kiếm. Lệnh sau sẽ tìm kiếm qua tất cả các tệp TXT và LOG không chứa sao chép trong tên của chúng:
$path = "c:\tmp\*"
Select-String -Path $path -Pattern "ERROR" -Include "*.txt","*.log" -Exclude "*copy*"

Ví dụ trước chỉ tìm kiếm một văn bản trong thư mục được chỉ định. Để tìm kiếm tệp trong các thư mục lồng nhau một cách đệ quy, hãy sử dụng Get-ChildItem lệnh ghép ngắn:

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