Cách sử dụng Grep Command trong Linux

Hiểu lệnh grep với các ví dụ thực tế để dễ dàng lọc và hiển thị nội dung tệp

GREP là viết tắt của 'Global Regular Expression Print'. Đây là một tiện ích dòng lệnh hữu ích được cung cấp bởi Linux, để tìm kiếm dòng văn bản phù hợp với mẫu do người dùng cung cấp.

grep lấy đầu vào từ người dùng dưới dạng chuỗi hoặc từ mà người dùng muốn tìm kiếm trong một tệp cụ thể. Sau đó, lệnh sẽ kiểm tra tệp được người dùng chỉ định cho mẫu này và sau đó trả về các dòng phù hợp với mẫu được cung cấp.

Nó thực hiện một công việc xuất sắc bằng cách lọc nội dung của một tệp, do đó làm cho nhiệm vụ của chúng tôi dễ dàng hơn khi tìm kiếm nội dung cụ thể trên một hoặc nhiều tệp đồng thời.

Trong bài viết này, hãy để chúng tôi xem xét hoạt động của grep lệnh với một số ví dụ thực tế chi tiết.

Các tùy chọn có sẵn với grep yêu cầu

Đây là một số tùy chọn cơ bản mà bạn sẽ sử dụng thường xuyên với grep yêu cầu.

Lựa chọnSự miêu tả
-tôiĐối với tìm kiếm không phân biệt chữ hoa chữ thường
-rĐể tìm kiếm đệ quy tất cả các tệp trong thư mục được chỉ định và các thư mục con của nó
-CĐể hiển thị tổng số lần một chuỗi xuất hiện
-vĐể hiển thị các dòng không khớp
-wLọc cho từ cụ thể đó được sử dụng riêng

Sử dụng grep yêu cầu

grep lệnh thường được sử dụng với đường ống (|) tính thiết thực. Nó có thể được thực hiện với shell pipe khi bạn muốn sử dụng nó với một số lệnh Linux khác. Mặc du, grep cũng có thể được sử dụng riêng lẻ mà không cần đường ống (|) tính thiết thực.

Hãy để chúng tôi xem một số cú pháp cơ bản của grep lệnh có và không có tiện ích ống.

Trước tiên, hãy để tôi cho bạn xem tệp văn bản mẫu mà tôi sẽ sử dụng để minh họa grep yêu cầu.

ẤN ĐỘ LÀ MỘT QUỐC GIA ĐẸP NHẤT CỦA NHỮNG NGƯỜI YÊU THƯƠNG HÒA BÌNH. Ấn Độ đứng trên ba trụ cột là lập pháp, hành pháp và tư pháp. Ấn Độ Là Một Đất Nước Xinh Đẹp Của Hòa Bình Những Con Người Yêu Thương. Ấn Độ quan tâm đến người dân vì nó có tầm quan trọng của tọa độ Cartesian tài nguyên của tất cả các tọa độ Cartesian thứ. Sau đây là hai dòng trống. sử dụng xe bò là cảnh thường thấy trong làng để làm công việc nhà nông. Đây là phần cuối của tệp mẫu.

grep được sử dụng với pipe (|)tính thiết thực

grep lệnh có thể được thực hiện cùng với các lệnh Linux khác bằng cách sử dụng các đường ống trình bao. Giống như, sử dụng con mèo để hiển thị nội dung của tệp nhưng đồng thời chuyển đầu ra bằng cách sử dụng grep lệnh chỉ hiển thị nội dung mà bạn muốn xem. Điều này sẽ rõ ràng hơn khi chúng ta xem qua ví dụ.

Cú pháp:

[lệnh] | grep [chuỗi]

Thí dụ:

cat sample.txt | cơ quan lập pháp grep

Ở đây, tôi đã sử dụng con mèo lệnh để hiển thị một số dòng từ tệp ‘sample.txt’. Chỉ những dòng đó được hiển thị có chứa từ 'lập pháp' trong đó và bỏ qua các dòng còn lại.

Đầu ra:

gaurav @ ubuntu: ~ / workspace $ cat sample.txt | Cơ quan lập pháp grep của Ấn Độ đứng trên ba trụ cột là lập pháp, hành pháp và tư pháp. gaurav @ ubuntu: ~ / workspace $

grep được sử dụng không có đường ống (|)tính thiết thực

grep thậm chí có thể được sử dụng trực tiếp như một lệnh riêng lẻ mà không cần sử dụng đường dẫn ( | ) tính thiết thực.

Cú pháp:

grep [string_to_be_searched] [tên tệp]

Thí dụ:

grep India sample.txt

Đầu ra:

Ấn Độ Là Một Đất Nước Xinh Đẹp Của Hòa Bình Những Con Người Yêu Thương. Ấn Độ quan tâm đến người dân vì đó là tài nguyên

Vì vậy, tôi đã sử dụng grep lệnh trực tiếp để lọc các dòng có chứa chuỗi "India" khỏi tệp văn bản "sample.txt".

Tìm kiếm không phân biệt chữ hoa chữ thường bằng cách sử dụng grep yêu cầu

Linux rất thận trọng về phân biệt chữ hoa chữ thường khi chúng ta kích hoạt các lệnh trên thiết bị đầu cuối. Điều này đòi hỏi người dùng phải cẩn thận về trường hợp chuỗi được đưa vào lệnh.

Hãy để chúng tôi thấy điều này thông qua một ví dụ.

grep hòa bình sample.txt

Trong trường hợp này, chúng tôi sẽ không nhận được đầu ra vì không tồn tại từ "hòa bình" trong tệp mẫu. Chúng ta có từ ‘Hòa bình’ với chữ ‘P’ viết hoa. Từ giống nhau nhưng khi chúng ta sử dụng grep lệnh mà không có bất kỳ tùy chọn nào, nó tìm kiếm kết quả khớp chính xác trong tệp, bỏ qua bất kỳ thay đổi nào trong chữ cái.

Để tránh sự mơ hồ này, bạn có thể chỉ cần sử dụng -tôi tùy chọn theo nghĩa đen cho biết grep yêu cầu "Quên trường hợp tôi đã đặt chuỗi và chỉ cần tìm kiếm tất cả các mẫu phù hợp trong tệp."

Cú pháp:

grep -i [string] [tên tệp]

Thí dụ:

grep -i hòa bình sample.txt

Đầu ra:

ẤN ĐỘ LÀ MỘT QUỐC GIA ĐẸP NHẤT CỦA NHỮNG NGƯỜI YÊU THƯƠNG HÒA BÌNH. Ấn Độ Là Một Đất Nước Xinh Đẹp Của Hòa Bình Những Con Người Yêu Thương.

Tất cả các dòng phù hợp được hiển thị bất kể trường hợp của chuỗi khớp.

Tìm kiếm đệ quy bằng cách sử dụng grep yêu cầu

Các -r tùy chọn sẽ tìm kiếm tất cả các tệp trong một thư mục và tất cả các thư mục con của nó khớp với mẫu chuỗi do người dùng cung cấp trong lệnh.

Cú pháp:

grep -i -r [string] [file_path]

Thí dụ:

grep -i -r tomcat / home / gaurav / workspace

Chuỗi ở đây là ‘tomcat’ và nó sẽ được tìm kiếm trong không gian làm việc của thư mục. Tất cả các thư mục con và tệp trong thư mục ‘không gian làm việc’ cũng sẽ được quét để khớp với mẫu chuỗi được cung cấp.

Đầu ra:

./context_log.policy:// catalina.policy - Quyền chính sách bảo mật cho Tomcat 7 ./context_log.policy:// Lưu ý: Nếu tomcat-juli.jar ở $ {catalina.base} chứ không phải ở $ {catalina.home }, ./context_log.policy:// cấp tệp codeBase ": $ {catalina.base} /bin/tomcat-juli.jar" {..} ./context_log.policy:grant codeBase "tệp: $ {catalina.home } /bin/tomcat-juli.jar "{./context_log.policy: allow java.lang.RuntimePermission" accessClassInPackage.org.apache.tomcat.websocket.server "; ./context.xml: ./catalina.properties:# - Tomcat Bootstrap JAR ./catalina.properties:# - Tomcat API JAR ./catalina.properties:# - Tomcat JAR ./catalina.properties:# - Thông thường không phải Tomcat JAR ./catalina.properties:org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar ./catalina.properties:tomcat.util.buf.StringCache.byte.enabled=true ./catalina.properties:# tomcat.util.buf.StringCache.char.enabled = true ./catalina.properties:#tomcat.util.buf.StringCache.trainThreshold=500000 ./catalina.properties:#tomcat.util.buf.StringCache.cacheSize=5000. /server.xml: pathname = "conf / tomcat-users.xml" /> ./server.xml: 

GHI CHÚ: Trong khi sử dụng -r tùy chọn với grep lệnh chúng tôi cần cung cấp đường dẫn của tệp chứ không phải tên tệp

Chỉ tìm kiếm toàn bộ từ với grep yêu cầu

Nhiều trường hợp là bạn sẽ tìm kiếm một từ nhưng cuối cùng bạn sẽ điền vào thiết bị đầu cuối của mình các dòng phù hợp có chứa từ phù hợp của bạn nhưng không phải là một từ riêng lẻ. Bạn có thể thấy các dòng chứa một số từ có phần phụ là chuỗi mà bạn đã nhập.

Bạn bối rối với điều này? Đừng lo lắng, sẽ dễ hiểu hơn nhiều khi bạn lấy được ví dụ.

Thí dụ:

Ở đây, tôi muốn tìm kiếm một từ riêng lẻ ‘giỏ hàng’ và hiển thị tất cả các dòng khớp với từ này trong tệp ‘sample.txt’.

grep -i cart sample.txt

Đầu ra:

Tầm quan trọng của tọa độ Descartes của tất cả các tọa độ Descartes. Việc sử dụng xe bò là cảnh thường thấy trong làng để làm việc nhà cho nông dân Chiếc xe bị mất tích khi cậu bé để nó lỏng lẻo.

Trong đầu ra, bạn có thể quan sát thấy từ ‘Descartes’ cũng chứa từ ‘cart’ và do đó, các dòng chứa từ ‘Descartes’ cũng được hiển thị mặc dù chúng ta không muốn chúng được hiển thị.

Bạn có thể dùng -w tùy chọn với grep lệnh để giải quyết sự mơ hồ này.

Cú pháp:

grep -i -w [string] [tên tệp]

Thí dụ:

grep -i -w cart sample.txt

Đầu ra:

sử dụng xe bò là cảnh thường thấy trong làng để làm công việc nhà nông. Chiếc xe bị mất tích khi cậu bé để nó lỏng lẻo. 

Bây giờ, khi bạn đã sử dụng -w tùy chọn với grep bạn sẽ chỉ nhận được những dòng trong đó từ 'giỏ hàng' được sử dụng tổng thể.

Tìm kiếm đảo ngược bằng cách sử dụng grep yêu cầu

grep lệnh cũng có thể được sử dụng theo kiểu ngược lại. Chúng ta có thể sử dụng grep lệnh đối lập bằng cách ẩn các dòng phù hợp và chỉ hiển thị các dòng không tìm thấy khớp. Bạn có thể làm điều này bằng cách sử dụng -v tùy chọn với grep yêu cầu.

Cú pháp:

grep -i -v [string] [tên tệp]

Thí dụ:

grep -i -v resource sample.txt

Đầu ra:

ẤN ĐỘ LÀ MỘT QUỐC GIA ĐẸP NHẤT CỦA NHỮNG NGƯỜI YÊU THƯƠNG HÒA BÌNH. Ấn Độ đứng trên ba trụ cột là lập pháp, hành pháp và tư pháp. Ấn Độ Là Một Đất Nước Xinh Đẹp Của Hòa Bình Những Con Người Yêu Thương. tầm quan trọng của tọa độ Cartesian của tất cả các tọa độ Cartesian thứ. sử dụng xe bò là cảnh thường thấy trong làng để làm công việc nhà nông. Đây là phần cuối của tệp mẫu.

Trong đầu ra, tất cả các dòng khác được hiển thị ngoài dòng có chứa từ "resource".

Đếm số lần xuất hiện của chuỗi phù hợp

Đầu ra của grep lệnh thường rất dài nếu dữ liệu trong tệp lớn. Càng nhiều trận đấu, đầu ra của grep yêu cầu. Linux cung cấp cho bạn một tùy chọn để bạn có thể hiển thị số lần xuất hiện của trận đấu.

Cú pháp:

grep -i -c [string] [tên tệp]

Thí dụ:

grep -i -c india sample.txt

Đầu ra:

gaurav @ ubuntu: ~ / workspace $ grep -i -c india sample.txt 4 gaurav @ ubuntu: ~ / workspace $

Ở đây, đầu ra là một số là số lần xuất hiện của từ 'India' trong tệp sample.txt.

GHI CHÚ: Tôi đã sử dụng -tôi trong mọi ví dụ để an toàn với vấn đề phân biệt chữ hoa chữ thường. Trong trường hợp bạn chắc chắn về trường hợp của từ bạn đang tìm kiếm, thì bạn có thể bỏ qua một cách an toàn -tôi lựa chọn.

Sự kết luận

Chúng tôi đã học được những cách sử dụng cơ bản của grep lệnh trên hệ thống Linux trong hướng dẫn này. Chúng tôi cũng đã học cách hiển thị các nội dung khác nhau phù hợp nhất với yêu cầu của chúng tôi và không làm chật chội thiết bị đầu cuối với vô số dòng. grep lệnh chắc chắn sẽ tiết kiệm thời gian nếu được sử dụng để quét các tập dữ liệu lớn.