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, chúng ta hãy xem xét hoạt động của grep
lệnh với một số ví dụ thực tế một cách chi tiết.
Các tùy chọn có sẵn với grep
lệnh
Đâ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
lệnh.
Lựa chọn |
Sự miêu 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
lệnh
grep
lệnh thường được sử dụng với |
tiện ích pipe ( ). 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 dù, grep
cũng có thể được sử dụng riêng lẻ mà không cần |
tiện ích pipe ( ).
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 dẫn.
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
lệnh.
INDIA IS A BEAUTIFUL COUNTRY OF PEACE LOVING PEOPLE.
india stands on three pillars of legislature, executive and judiciary.
India Is a Beautiful Country Of Peace Loving People.
India cares for the people as it's resource
cartesian coordinates
importance of all th cartesian coordinates.
Following are two empty lines.
use of a bullock cart is a common sight in the village for the agrarian chores.
This is the end of the sample file.
grep
được sử dụng với tiện ích pipe (|)
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 cat
lệnh để hiển thị nội dung của tệp nhưng đồng thời chuyển đầu ra bằ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 :
[command] | grep [string]
Ví dụ :
cat sample.txt | grep legislature
Ở đây, tôi đã sử dụng cat
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ừ 'cơ quan lập pháp' trong đó và bỏ qua các dòng còn lại.
Đầu ra :
[email protected]:~/workspace$ cat sample.txt | grep legislature
india stands on three pillars of legislature, executive and judiciary.
[email protected]:~/workspace$
grep
được sử dụng mà không có tiện ích pipe (|)
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 |
tiện ích pipe ( ).
Cú pháp :
grep [string_to_be_searched] [filename]
Ví dụ :
grep India sample.txt
Đầu ra :
India Is a Beautiful Country Of Peace Loving People.
India cares for the people as it's resource
Do đó, 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 grep
lệnh
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 peace sample.txt
Trong trường hợp này, chúng tôi sẽ không nhận được đầu ra vì không có từ nào là '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ó sẽ 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 -i
tùy chọn theo nghĩa đen cho grep
lệnh "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] [filename]
Ví dụ :
grep -i peace sample.txt
Đầu ra :
INDIA IS A BEAUTIFUL COUNTRY OF PEACE LOVING PEOPLE.
India Is a Beautiful Country Of Peace Loving People.
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 grep
lệnh
Các -r
tùy chọn sẽ tìm kiếm tất cả các file trong một thư mục và tất cả của nó thư mục con mà phù hợp với mô hình chuỗi cung cấp bởi người sử dụng trong lệnh.
Cú pháp :
grep -i -r [string] [file_path]
Ví 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 - Security Policy Permissions for Tomcat 7
./context_log.policy:// Note: If tomcat-juli.jar is in ${catalina.base} and not in ${catalina.home},
./context_log.policy:// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..}
./context_log.policy:grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {
./context_log.policy: permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server";
./context.xml:
./catalina.properties:# - Tomcat Bootstrap JARs
./catalina.properties:# - Tomcat API JARs
./catalina.properties:# - Tomcat JARs
./catalina.properties:# - Common non-Tomcat JARs
./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:
./tomcat-users.xml:
./tomcat-users.xml:
./web.xml:
./web.xml:
LƯU Ý : 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ừ bằng grep
lệnh
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ụ.
Ví dụ :
Ở đây, tôi muốn tìm kiếm một từ 'giỏ hàng' riêng lẻ và hiển thị tất cả các dòng phù hợp với từ này trong tệp 'sample.txt'.
grep -i cart sample.txt
Đầu ra :
Cartesian coordinates
importance of all the Cartesian coordinates.
use of a bullock cart is a common sight in the village for the agrarian chores
The cart went missing as the boy left it loose.
Trong đầu ra, bạn có thể quan sát thấy từ 'Descartes' cũng chứa từ 'giỏ hàng' và do đó, các dòng có 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ể sử 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] [filename]
Ví dụ :
grep -i -w cart sample.txt
Đầu ra :
use of a bullock cart is a common sight in the village for the agrarian chores.
The cart went missing as the boy left it loose.
Bây giờ, khi bạn đã sử dụng w
tùy chọn - với grep
bạn sẽ chỉ nhận được các dòng trong đó từ 'giỏ hàng' được sử dụng tổng thể.
Đảo ngược tìm kiếm bằng grep
lệnh
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
lệnh.
Cú pháp :
grep -i -v [string] [filename]
Ví dụ :
grep -i -v resource sample.txt
Đầu ra :
INDIA IS A BEAUTIFUL COUNTRY OF PEACE LOVING PEOPLE.
india stands on three pillars of legislature, executive and judiciary.
India Is a Beautiful Country Of Peace Loving People.
cartesian coordinates
importance of all th cartesian coordinates.
use of a bullock cart is a common sight in the village for the agrarian chores.
This is the end of the sample file.
Trong đầu ra, tất cả các dòng khác được hiển thị ngoài dòng có chứa từ 'tài nguyên'.
Đế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, kết quả đầu ra của grep
lệnh càng dài. 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] [filename]
Ví dụ :
grep -i -c india sample.txt
Đầu ra :
[email protected]:~/workspace$ grep -i -c india sample.txt
4
[email protected]:~/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.
LƯU Ý : Tôi đã sử dụng -i
tùy chọn 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 -i
tùy chọn một cách an toàn .
Phần kết luận
Chúng ta đã tìm hiểu các 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.