Grep Command trong Linux

Grep Command Linux



Lệnh Grep (in biểu thức chính quy toàn cầu) là tiện ích dòng lệnh mạnh mẽ nhất và được sử dụng thường xuyên của Linux. Sử dụng Grep, bạn có thể tìm kiếm thông tin hữu ích bằng cách chỉ định tiêu chí tìm kiếm. Nó tìm kiếm một mẫu biểu thức cụ thể trong một tệp được chỉ định. Khi tìm thấy một kết quả phù hợp, nó sẽ in tất cả các dòng của tệp phù hợp với mẫu đã chỉ định. Nó có ích khi bạn phải lọc qua các tệp nhật ký lớn.

Trong bài viết này, chúng tôi sẽ giải thích việc sử dụng tiện ích grep với các ví dụ khác nhau. Chúng tôi sẽ sử dụng Debian 10 để giải thích các lệnh và phương pháp được đề cập trong bài viết này.







Cài đặt Grep

Grep được cài đặt trong hầu hết các bản phân phối Linux. Tuy nhiên, trong trường hợp hệ thống của bạn bị thiếu, bạn có thể cài đặt nó bằng phương pháp sau trong Terminal:



$sudo apt-get cài đặt nắm chặt

Sử dụng Grep

Đây là cú pháp cơ bản của lệnh grep. Nó bắt đầu bằng grep, sau đó là một số tùy chọn và tiêu chí tìm kiếm, sau đó kết thúc bằng tên tệp.



$nắm chặt [tùy chọn]MẪU[TẬP TIN...]

Tìm kiếm tệp

Để tìm kiếm tên tệp trong thư mục có chứa một chuỗi cụ thể trong đó, bạn có thể sử dụng grep theo cách sau:





$ls -NS | nắm chặt -tôidây

Ví dụ: để tìm kiếm một tên tệp có chứa một chuỗi kiểm tra , lệnh sẽ là:

$ls-NS| nắm chặt-tôikiểm tra

Lệnh này liệt kê tất cả các tệp có chứa chuỗi kiểm tra .



Tìm kiếm một chuỗi trong một tệp

Để tìm kiếm một chuỗi trong một tệp cụ thể, bạn có thể sử dụng cú pháp lệnh sau:

$nắm chặttên tệp chuỗi

Ví dụ: để tìm kiếm một chuỗi kiểm tra trong một tệp có tên testfile1 , chúng tôi đã sử dụng lệnh sau :

$nắm chặtnhân viên testfile1

Đầu ra ở trên đã trả về câu từ testfile1 chứa chuỗi Nhân viên .

Tìm kiếm một chuỗi trong nhiều tệp

Để tìm kiếm một chuỗi trong nhiều tệp, bạn có thể sử dụng cú pháp lệnh sau:

$nắm chặtstring filename1 filename2

Ví dụ: để tìm kiếm một nhân viên chuỗi trong hai tệp testfile1 và testfile2 của chúng tôi, chúng tôi đã sử dụng lệnh sau:

$nắm chặtnhân viên testfile1 testfile2

Lệnh trên sẽ liệt kê tất cả các dòng có chứa chuỗi nhân viên từ cả hai tệp testfile1 và testfile2.

Bạn cũng có thể sử dụng một ký tự đại diện nếu tất cả các tên tệp bắt đầu bằng cùng một văn bản.

$nắm chặttên tệp chuỗi*

Giống như, nếu chúng ta lấy ví dụ ở trên, trong đó tên tệp của chúng ta là testfile1 và testfile2 , lệnh sẽ là:

$nắm chặthồ sơ kiểm tra nhân viên*

Tìm kiếm một chuỗi trong tệp bằng cách bỏ qua trường hợp của chuỗi

Thông thường, bạn đã gặp điều đó khi bạn tìm kiếm thứ gì đó bằng grep nhưng không nhận được kết quả đầu ra. Điều này xảy ra do trường hợp không khớp trong khi tìm kiếm một chuỗi. Giống như trong ví dụ của chúng tôi, nếu chúng tôi sử dụng nhầm Nhân viên thay vì Nhân viên , nó sẽ trả về nil vì tệp của chúng tôi chứa chuỗi Nhân viên bằng chữ thường.

Bạn có thể yêu cầu grep bỏ qua trường hợp chuỗi tìm kiếm bằng cách sử dụng cờ –i sau grep như sau:

$nắm chặt–I string tên tệp

Bằng cách sử dụng cờ –i, lệnh sẽ thực hiện tìm kiếm không phân biệt chữ hoa chữ thường và sẽ trả về tất cả các dòng chứa chuỗi Nhân viên trong đó mà không tính đến các chữ cái viết hoa hay viết thường.

Tìm kiếm bằng cách sử dụng biểu thức chính quy

Nếu được sử dụng đúng cách, biểu thức chính quy là một tính năng rất hiệu quả trong grep. Với lệnh Grep, bạn có thể xác định một biểu thức chính quy với một từ khóa bắt đầu và kết thúc. Làm như vậy, bạn sẽ không cần phải nhập toàn bộ dòng bằng lệnh grep. Cú pháp sau có thể được sử dụng cho mục đích này.

$nắm chặttừ khóa bắt đầu.*endKeyword tên tệp

Ví dụ: để tìm kiếm một dòng trong tệp có tên testfile1 bắt đầu bằng chuỗi này và kết thúc bằng dữ liệu chuỗi, chúng tôi đã sử dụng lệnh sau:

$nắm chặtcái này.*data testfile1

Nó sẽ in toàn bộ dòng từ testfile1 chứa biểu thức (bắt đầu từ khóa này và dữ liệu từ khóa kết thúc).

In số dòng cụ thể sau / trước chuỗi tìm kiếm

Bạn cũng có thể hiển thị số dòng cụ thể trong tệp trước / sau khi khớp chuỗi cùng với chính chuỗi đã khớp. Cú pháp sau có thể được sử dụng cho mục đích này:

$nắm chặt -ĐẾN <n>tên tệp chuỗi

Nó sẽ hiển thị N số dòng sau khi chuỗi được khớp trong tệp được chỉ định bao gồm cả chuỗi đã khớp.

Ví dụ: đây là tệp mẫu của chúng tôi có tên testfile2 .

Lệnh sau sẽ xuất ra dòng phù hợp có chứa chuỗi Nhân viên , cùng với 2 dòng sau nó.

$nắm chặt-ĐẾN2–I nhân viên testfile2

Tương tự, để hiển thị N số dòng trước chuỗi được so khớp trong một tệp cụ thể, hãy sử dụng cú pháp sau:

$nắm chặt -NS <n>tên tệp chuỗi

Để hiển thị N số dòng xung quanh chuỗi trong một tệp cụ thể, hãy sử dụng cú pháp sau:

$nắm chặt -NS <n>tên tệp chuỗi

Đánh dấu tìm kiếm

Grep theo mặc định in các dòng phù hợp nhưng không hiển thị phần nào của dòng được khớp. Nếu bạn sử dụng tùy chọn –color với grep, nó sẽ hiển thị vị trí các chuỗi gia công xuất hiện trong tệp của bạn. Grep theo mặc định sử dụng màu đỏ để làm nổi bật.

Cú pháp sau có thể được sử dụng cho mục đích này:

$nắm chặttên tệp chuỗi--màu sắc

Đếm số trận đấu

Nếu bạn muốn đếm số lần một từ cụ thể xuất hiện trong một tệp cụ thể, bạn có thể sử dụng tùy chọn grep with –c. Nó chỉ trả về số lượng kết quả phù hợp chứ không phải chính các kết quả phù hợp. Cú pháp sau có thể được sử dụng cho mục đích này:

$nắm chặt–C string tên tệp

Đây là tệp mẫu của chúng tôi trông giống như:

Sau đây là một ví dụ về một lệnh trả về số lần từ tập tin xuất hiện trong một tệp có tên testfile3 .

Tìm kiếm đảo ngược

Đôi khi, bạn muốn thực hiện tìm kiếm ngược hiển thị tất cả các dòng ngoại trừ dòng khớp với đầu vào. Để làm như vậy, chỉ cần sử dụng cờ –v theo sau là grep:

$nắm chặtTên tệp chuỗi –v

Ví dụ: để hiển thị tất cả các dòng trong một tệp testfile3 không chứa tài khoản từ trong chúng, chúng tôi đã sử dụng lệnh sau:

$nắm chặt–V tài khoản testfile3

Sử dụng Grep với các lệnh khác

Grep cũng có thể được sử dụng để lọc ra kết quả cần thiết từ các đầu ra lệnh khác nhau. Ví dụ, từ apt –danh sách đã cài đặt đầu ra lệnh, bạn chỉ muốn tìm các gói đã được cài đặt tự động, bạn có thể lọc ra kết quả bằng cách sử dụng grep như sau:

$đúng cách--Cài đặtdanh sách| nắm chặttự động

Tương tự, lscpu cung cấp thông tin chi tiết về CPU. Nếu bạn chỉ quan tâm đến thông tin liên quan đến kiến ​​trúc CPU, bạn có thể lọc nó ra bằng lệnh sau:

$lscpu| nắm chặtNgành kiến ​​trúc

Trong bài viết này, chúng tôi đã mô tả một số ví dụ sẽ giúp bạn hiểu các lệnh grep và việc sử dụng nó trong các điều kiện khác nhau. Nắm chắc lệnh grep có thể tiết kiệm rất nhiều thời gian nếu bạn cần xem các tệp nhật ký hoặc cấu hình lớn và đọc lướt các thông tin hữu ích qua chúng.