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ọn | Sự 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 |
-w | Lọ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.