Computer >> Máy Tính >  >> Lập trình >> Lập trình BASH

Làm thế nào để Grep cho Nhiều Từ, Chuỗi và Mẫu

Hướng dẫn này giải thích cách sử dụng grep tiện ích để tìm kiếm nhiều từ, chuỗi, mẫu. Bạn có thể tìm thấy các ví dụ đầy đủ về các lệnh được sử dụng để thực hiện việc này bên dưới.

Grep là gì?

Khi chúng ta đề cập đến grep, chúng ta đang nói về hàm dòng lệnh . Grep là viết tắt của Global Regular Expression Print. Về bản chất, nó sẽ tìm kiếm các tệp đầu vào để tìm các dòng khớp với một biểu thức chính quy nhất định. Sau đó, nó trả về kết quả bằng cách viết từng dòng cho đầu ra chuẩn.

Tiện ích grep phù hợp với ba cú pháp biểu thức. Chúng có thể được chỉ định là Cơ bản, Mở rộng hoặc Tương thích với Perl. Nếu không có cú pháp biểu thức chính quy nào được chỉ định, GNY grep sẽ đặt các mẫu tìm kiếm làm biểu thức cơ bản.

Grep cho nhiều mẫu

Nếu bạn muốn tìm kiếm nhiều mẫu, bạn có thể sử dụng toán tử OR, được gọi là toán tử thay thế. Toán tử / đường ống này trông giống như sau: |

Nó sẽ cho phép người dùng chỉ định tất cả các kết quả phù hợp tiềm năng, cho dù chúng là tập hợp biểu thức hay chuỗi ký tự. Như vậy, để tìm kiếm nhiều mẫu, đầu vào sẽ là:

Tên tệp
$ grep 'first pattern\|second pattern' filename

mẫu đầu tiên ‘Và‘ mẫu thứ hai ‘Sẽ được thay thế bằng các mẫu tiềm năng mà bạn đang tìm kiếm. Biểu thức chính quy này - ‘ mẫu đầu tiên \ | mẫu thứ hai ‘- phải luôn được đặt trong dấu ngoặc kép. Biểu tượng ống dẫn không được hỗ trợ như một toán tử thay thế và như vậy là ký tự thoát ( dấu gạch chéo ngược ) ký tự được yêu cầu để lệnh grep hướng dẫn đường ống khác nhau.

Để chỉ định mẫu dự kiến ​​làm biểu thức chính quy mở rộng, ‘ -e ‘Hoặc‘ —extended-regexp ' có thể được sử dụng. Ví dụ:

Tên tệp
$ grep -E 'first pattern|second pattern' filename

Trong regex mở rộng, bạn không bắt buộc phải thoát khỏi đường ống.

Bạn có thể tìm kiếm theo tệp, vì vậy các mẫu tìm kiếm trong Presentation.txt có thể trông giống như sau:

$ grep -E 'first pattern|second pattern' presentation.txt

Đầu ra sẽ hiển thị các chuỗi bạn muốn tô sáng.

Nếu tệp bạn đang tìm kiếm nằm trong một thư mục khác, bạn sẽ cần hướng dẫn grep tìm kiếm trong thư mục cụ thể đó bằng cách sử dụng đường dẫn tệp đầy đủ. Ví dụ:

$ grep -E 'first pattern|second pattern' /home/presentation.txt

Grep cho nhiều chuỗi

Cơ bản nhất của các mẫu là chuỗi theo nghĩa đen. Để tìm kiếm nhiều chuỗi, bạn phải nhập những chuỗi này sau lệnh grep. Hãy tưởng tượng chúng ta đang tìm kiếm ‘ một ‘,‘ hai ‘Và‘ ba ‘. Nó có thể trông như thế này:

$ grep 'one\|two\|three'

Làm theo lệnh đó với tệp mà bạn đang tìm kiếm. Nếu bạn đang tìm kiếm bằng cách sử dụng biểu thức chính quy mở rộng, về cơ bản bạn đang xóa ‘ \ ‘. Ví dụ:

$ grep -E 'one|two|three'

Bỏ qua Phân biệt chữ hoa chữ thường

Lệnh ‘grep’ có phân biệt chữ hoa chữ thường. Để bỏ qua trường hợp chữ cái, hãy gọi bằng ‘ -i ‘Hoặc‘ —chính chữ thường ' quyền mua. Ví dụ:

$ grep -i 'one\|two\|three'

Hiển thị số lượng nhiều kết quả phù hợp

Nếu bạn đang ở trong tệp nhật ký và muốn biết liệu số lượng cảnh báo và thông báo lỗi có tăng lên hay không nhưng không thấy kết quả chi tiết đầy đủ, bạn có thể sử dụng ‘ -c ‘. Để đếm nhiều kết quả phù hợp trong myapp.log tệp, nó có thể trông giống như sau:

grep -c 'one\|two\|three' /var/log/myapp.log

Grep Nhiều mẫu trong các loại tệp cụ thể

Nhiều chuỗi có thể được tìm kiếm trong một loại tệp nhất định. Điều này cho phép bạn tìm kiếm, ví dụ, tất cả các tệp văn bản hoặc tất cả các tệp nhật ký trong một thư mục. Sử dụng dấu hoa thị với phần mở rộng tệp thay vì tên tệp sẽ chỉ dẫn grep. Sử dụng ví dụ trên cho các thông báo lỗi, xem qua tất cả các tệp nhật ký có thể trông giống như sau:

grep -c 'one\|two\|three' /var/log/*.log

Tìm kiếm đệ quy nhiều kết hợp

Sử dụng grep sẽ chỉ tìm kiếm trong thư mục hiện tại với dấu hoa thị được sử dụng. Nếu bạn cần bao gồm tất cả các thư mục con, tùy chọn ‘-R’ có thể được sử dụng:

grep -R 'one\|two\|three' /var/log/*.log

Sau đó, điều này sẽ trả về kết quả cho tất cả các tệp được tìm thấy trong thư mục var / log / và các thư mục con được chỉ định.

Sử dụng grep để có kết quả phù hợp chính xác

Lệnh ‘grep’ sẽ hiển thị tất cả các kết quả trong đó chuỗi cũng được nhúng và không chỉ là kết quả khớp chính xác. Ví dụ:khi tìm kiếm "giá trị", nó sẽ in ra các dòng bao gồm cả "giá trị" và cả "giá trị". Nếu bạn muốn trả về các dòng chỉ có kết quả khớp chính xác của toàn bộ từ, bạn có thể sử dụng ‘ -w ‘Hoặc‘ —word-regexp ‘. Điều này có thể trông giống như vậy nếu bạn đang tìm kiếm các kết quả phù hợp chính xác của ‘ một ‘,‘ hai ‘, Và‘ ba ‘:

$ grep -w 'one\|two\|three'

Các ký tự trong Word bao gồm cả chữ và số, do đó 0-9 và a-z cộng với các ký tự gạch dưới. Bất kỳ ký tự nào khác được coi là các ký tự không phải từ.