<Trước | Nội dung | Tiếp theo>
grep
Chương trình chính mà chúng tôi sẽ sử dụng để làm việc với các biểu thức chính quy là người bạn cũ của chúng tôi, grep. Tên "grep" thực sự bắt nguồn từ cụm từ "in biểu thức chính quy toàn cầu", vì vậy chúng ta có thể thấy rằng grep có liên quan đến biểu thức chính quy. Về bản chất, grep tìm kiếm các tệp văn bản để tìm văn bản xuất hiện khớp với một biểu thức chính quy được chỉ định và xuất ra bất kỳ dòng nào có chứa kết quả khớp với đầu ra chuẩn.
Cho đến nay, chúng tôi đã sử dụng grep với các chuỗi cố định, như vậy:
[tôi @ linuxbox ~] $ ls / usr / bin | grep zip
[tôi @ linuxbox ~] $ ls / usr / bin | grep zip
Điều này sẽ liệt kê tất cả các tệp trong / usr / bin thư mục có tên chứa chuỗi con “zip”.
Sản phẩm grep chương trình chấp nhận các tùy chọn và đối số theo cách này:
grep [lựa chọn] biểu thức chính quy [tập tin...]
Ở đâu biểu thức chính quy là một biểu thức chính quy.
Dưới đây là danh sách các grep lựa chọn:
Bảng 19-1: Tùy chọn grep
Mô tả tùy chọn
Mô tả tùy chọn
-i Bỏ qua trường hợp. Không phân biệt ký tự viết hoa và viết thường. Cũng có thể được chỉ định --bỏ qua trường hợp.
-v Đảo ngược trận đấu. Thông thường, grep in các dòng có chứa một kết quả phù hợp.
Tùy chọn này gây ra grep để in mọi dòng không chứa kết quả phù hợp. Cũng có thể được chỉ định --đảo ngược kết hợp.
-c In số lượng kết quả phù hợp (hoặc không phù hợp nếu -v tùy chọn cũng được chỉ định) thay vì chính các dòng. Cũng có thể được chỉ định --đếm.
-l In tên của mỗi tệp có chứa một kết quả phù hợp thay vì chính các dòng. Cũng có thể được chỉ định --files-with-match.
-L Giống như tùy chọn -l, nhưng chỉ in tên của các tệp không chứa các kết quả trùng khớp. Cũng có thể được chỉ định --files-without- match.
-n Bắt đầu mỗi dòng phù hợp với số dòng trong tệp. Cũng có thể được chỉ định - số dòng.
-h Đối với các tìm kiếm nhiều tệp, hãy chặn đầu ra của tên tệp. Cũng có thể được chỉ định --không có tên tệp.
Để khám phá đầy đủ hơn grep, hãy tạo một số tệp văn bản để tìm kiếm:
grep
[tôi @ linuxbox ~] $ ls / bin> dirlist-bin.txt [tôi @ linuxbox ~] $ ls / usr / bin> dirlist-usr-bin.txt [tôi @ linuxbox ~] $ ls / sbin> dirlist-sbin.txt [tôi @ linuxbox ~] $ ls / usr / sbin> dirlist-usr-sbin.txt [tôi @ linuxbox ~] $ ls dirlist * .txt
dirlist-bin.txt dirlist-sbin.txt dirlist-usr-sbin.txt dirlist-usr-bin.txt
[tôi @ linuxbox ~] $ ls / bin> dirlist-bin.txt [tôi @ linuxbox ~] $ ls / usr / bin> dirlist-usr-bin.txt [tôi @ linuxbox ~] $ ls / sbin> dirlist-sbin.txt [tôi @ linuxbox ~] $ ls / usr / sbin> dirlist-usr-sbin.txt [tôi @ linuxbox ~] $ ls dirlist * .txt
dirlist-bin.txt dirlist-sbin.txt dirlist-usr-sbin.txt dirlist-usr-bin.txt
Chúng tôi có thể thực hiện tìm kiếm đơn giản danh sách các tệp của chúng tôi như sau:
[tôi @ linuxbox ~] $ grep bzip dirlist * .txt
dirlist-bin.txt: bzip2 dirlist-bin.txt: bzip2recover
[tôi @ linuxbox ~] $ grep bzip dirlist * .txt
dirlist-bin.txt: bzip2 dirlist-bin.txt: bzip2recover
Trong ví dụ này, grep tìm kiếm tất cả các tệp được liệt kê cho chuỗi bzip và tìm thấy hai kết quả phù hợp, cả hai đều có trong tệp dirlist-bin.txt. Nếu chúng tôi chỉ quan tâm đến danh sách các tệp có chứa các kết quả phù hợp hơn là chính các tệp trùng khớp, chúng tôi có thể chỉ định -l tùy chọn:
[tôi @ linuxbox ~] $ grep -l bzip dirlist * .txt
dirlist-bin.txt
[tôi @ linuxbox ~] $ grep -l bzip dirlist * .txt
dirlist-bin.txt
Ngược lại, nếu chúng tôi chỉ muốn xem danh sách các tệp không chứa tệp trùng khớp, chúng tôi có thể thực hiện điều này:
[tôi @ linuxbox ~] $ grep -L bzip dirlist * .txt
dirlist-sbin.txt dirlist-usr-bin.txt dirlist-usr-sbin.txt
[tôi @ linuxbox ~] $ grep -L bzip dirlist * .txt
dirlist-sbin.txt dirlist-usr-bin.txt dirlist-usr-sbin.txt
<Trước | Nội dung | Tiếp theo>