Lệnh GREP là một trong những lệnh cơ bản và quan trọng nhất trong hệ điều hành Linux. Lệnh GREP có khả năng tìm kiếm trong Linux và trích xuất chuỗi từ file, giúp ích rất nhiều khi phân tích và xử lý dữ liệu trên Linux. Bài viết trên InterData.vn sẽ giúp bạn hiểu được lệnh GREP trong Linux là gì? và 11 cách để sử dụng lệnh GREP trong Linux hiệu quả. Cùng tìm hiểu ngay nhé!
Giới thiệu lệnh GREP trong Linux là gì?
Trong hệ điều hành Linux, lệnh GREP là một trong những công cụ quan trọng được sử dụng để tìm kiếm và lọc các chuỗi trong các tập tin và thư mục. Lệnh GREP có rất nhiều ứng dụng, từ việc tìm kiếm một chuỗi cụ thể trong một tập tin đến việc tìm kiếm chuỗi trong tất cả các tệp và thư mục con.
11 Cách sử dụng lệnh GREP trong Linux chi tiết
Tiếp tục với hệ điều hành Linux, InterData.vn sẽ hướng dẫn cách sử dụng lệnh grep – nó giúp bạn tìm các chuỗi trong một tệp được chỉ định.
Tìm một chuỗi trong một file
Đây là cách sử dụng cơ bản và thông dụng nhất, nếu bạn chỉ muốn tìm một chuỗi trong một file duy nhất thì có thể sử dụng cú pháp sau:
$ grep "chuoi" ten_file
Kết quả sẽ được hiển thị ngay trên màn hình command line. Bất kỳ dòng nào chứa một chuỗi sẽ hiển thị toàn bộ dòng trong file và chuỗi đó sẽ được highlight.
Ví dụ: Để tìm chuỗi “Hello” trong tệp text.txt, bạn có thể sử dụng câu lệnh như sau:
grep “Hello” text.txt
Kết quả sẽ là tất cả các dòng trong file text.txt có chứa chuỗi “Hello”. Nếu không có hàng nào chứa chuỗi “Hello” thì không có kết quả nào được trả về.
Tìm chuỗi trong nhiều file cùng một lúc
Để thực hiện việc này, bạn cần chỉ định pattern chung của các file để tìm kiếm:
$ grep "chuoi" file_pattern
Ví dụ: để tìm kiếm chuỗi “hello world” trong các file file1.txt, file2.txt, và file3.txt, bạn có thể sử dụng lệnh sau:
grep ‘hello world’ file1.txt file2.txt file3.txt
Lệnh này sẽ tìm kiếm chuỗi “hello world” trong các tệp file1.txt, file2.txt và file3.txt và hiển thị ra các dòng chứa chuỗi đó.
Tìm kiếm chuỗi không phân biệt chữ hoa/chữ thường
Thường thì, nếu bạn chắc chắn muốn tìm kiếm một chuỗi cụ thể và bạn chỉ quan tâm đến việc kết quả phải trùng khớp 100% với chuỗi đó, bạn không cần sử dụng tùy chọn -i. Lúc đó, lệnh grep sẽ thực hiện tìm kiếm chính xác theo chuỗi mà không phân biệt chữ hoa và chữ thường khi được chỉ định.
$ grep -i "chuoi" ten_file
Ví dụ:
grep -i “interdata” example.txt
Đoạn mã trên sẽ tìm kiếm trong tệp “example.txt” tất cả các dòng có chứa chuỗi “interdata”, không phân biệt chữ hoa chữ thường.
Tìm kiếm chuỗi sử dụng biểu thức chính quy (regular expression)
Để tìm kiếm một chuỗi bằng biểu thức chính quy, hãy sử dụng tham số “-E” hoặc “-P” sau lệnh grep để bật chế độ biểu thức chính quy. Sau đó chúng ta nhập biểu thức chính quy để tìm kiếm chuỗi muốn tìm.
$ grep "regex_here" ten_file
Ví dụ: nếu chúng ta muốn sử dụng biểu thức chính quy để tìm tất cả các từ bắt đầu bằng chữ cái “a” trong file “example.txt”, hãy nhập lệnh sau:
grep -E ‘^a’ example.txt
Trong đó “^a” là biểu thức chính quy tìm kiếm các từ bắt đầu bằng chữ “a”. Kết quả trả về sẽ là tất cả các dòng trong file “example.txt” chứa các từ bắt đầu bằng chữ “a”.
Tìm kiếm chuỗi đúng với từ khóa cụ thể
Để tìm kiếm chuỗi chính xác với một từ khóa cụ thể, sử dụng tham số -w hoặc –word-regexp. Khi đó grep chỉ tìm kiếm những chuỗi khớp với từ đúng chứ không tìm kiếm những từ chứa từ khóa đó.
Ví dụ:
grep -w “apple” fruits.txt
Lệnh trên sẽ tìm kiếm trong tệp Fruits.txt những dòng có chứa từ “apple” chứ không phải các từ khác như “pineapple” hoặc “applesauce”.
Hiển thị thêm dòng trước, sau và xung quanh dòng chứa kết quả
Trong một số trường hợp, bạn phải xử lý các file rất lớn, do đó, tùy chọn tìm kiếm hiển thị các dòng trước, sau hoặc xung quanh dòng kết quả có thể hữu ích.
$ grep - "chuoi" demo_file
-- A : là after
-- B : là before
-- C : là xung quanh
-- n : là số tự nhiên chỉ định xem hiển thị trước, sau hay xung quang bao nhiêu dòng
Ví dụ:
$ grep -B 3 -iw "chuoi" demo_file
-- Tức là hiển thị trước kết qủa thêm nội dung của 3 dòng nữa. Không phân biệt hoa thường và tìm chính xác
Tìm tất cả các file ở tất cả các thư mục con
Đôi khi, bạn có thể không biết chính xác file mà bạn đang tìm kiếm đặt ở đâu trong một thư mục chứa nhiều file, hoặc bạn có thể không nhớ chính xác tên của file đó. Trong trường hợp này, việc sử dụng tùy chọn -r sẽ rất hữu ích. Khi tùy chọn này được sử dụng, lệnh sẽ tiến hành tìm kiếm từ thư mục hiện tại đến hết các thư mục con và liệt kê tất cả các file chứa từ khóa tìm kiếm.
$ grep -r "chuoi" *
Đương nhiên ta vẫn có thể tìm file pattern
$ grep -r "chuoi" file_name_*
Tìm kiếm chuỗi không có từ khóa cụ thể
Để tìm kiếm các chuỗi không có từ khóa cụ thể trong file, hãy sử dụng lệnh GREP với tham số “-v” và kết hợp nó với các từ khóa được loại trừ bằng cách sử dụng biểu thức thông thường. Cú pháp sử dụng như sau:
grep -v ‘pattern’ filename
Trong đó “pattern” là từ khóa cần loại trừ và “filename” là tên file cần tìm kiếm.
Ví dụ: để tìm kiếm tất cả các dòng trong file “text.txt” không chứa từ “example”, hãy sử dụng lệnh sau:
grep -v ‘example’ text.txt
Lệnh này sẽ hiển thị tất cả các dòng trong file “text.txt” không chứa từ “example”.
Đếm số lần xuất hiện của chuỗi trong file
Để đếm số lần xuất hiện của một chuỗi trong một file, chúng ta có thể sử dụng lệnh GREP với tùy chọn -c (count). Cú pháp sử dụng như sau:
grep -c “chuỗi” file.txt
Trong đó, chuỗi là chuỗi cần tìm và file.txt là tên file cần tìm. Kết quả trả về sẽ là số lần chuỗi xuất hiện trong file.
Ví dụ: để đếm số lần từ “Lorem” xuất hiện trong file “example.txt”, ta có thể sử dụng lệnh:
grep -c “Lorem” example.txt
Kết quả trả về sẽ là số lần xuất hiện của từ “Lorem” trong file “example.txt”.
Chỉ hiển thị tên file
Để hiển thị tên các file chứa chuỗi kết quả, hãy sử dụng tham số -l hoặc –files-with-matches. Cú pháp sử dụng:
grep -l “chuỗi_cần_tìm” đường_dẫn_file_hoặc_thư_mục
Trong đó:
- -l hoặc –files-with-matches: Chỉ tên file chứa chuỗi kết quả mới được hiển thị chứ không hiển thị nội dung của dòng.
- “chuỗi_cần_tìm”: Là chuỗi cần tìm kiếm.
- đường_dẫn_file_hoặc_thư_mục: Là đường dẫn đến file hoặc thư mục chứa file cần tìm kiếm.
Ví dụ: Giả sử ta có một thư mục Documents chứa các file văn bản và chúng ta muốn tìm kiếm tất cả các file có chứa từ “interdata”. Hãy sử dụng lệnh sau:
grep -l “interdata” documents/
Kết quả hiển thị sẽ là tên các file chứa chuỗi “interdata” trong thư mục Documents và các thư mục con của nó.
Hiển thị số thứ tự của dòng kết qủa
Để hiển thị số dòng chứa chuỗi kết quả, ta sử dụng tùy chọn -n của lệnh grep. Tùy chọn này sẽ hiển thị số hàng trên cùng cùng với kết quả tìm kiếm. Cú pháp sử dụng:
grep -n “chuỗi” file
Trong đó:
- chuỗi: chuỗi cần tìm kiếm
- file: tên file cần tìm kiếm
Ví dụ:
$ cat file.txt
Hello
This is a sample file
For testing grep command
Have a nice day
$ grep -n “is” file.txt
2:This is a sample file
Trong ví dụ này, lệnh grep -n “is” file.txt sẽ tìm kiếm file.txt chuỗi “is” và hiển thị kết quả đầu tiên ở dòng số 2 (vì chuỗi “is” xuất hiện ở dòng đầu tiên Dòng 2) của file.
Bài viết trên InterData.vn đã giới thiệu đến bạn về lệnh GREP trong Linux là gì? và cũng đã gợi ý cho bạn 11 cách sử dụng lệnh GREP trong Linux. Hy vọng với những kiến thức cơ bản về lệnh grep trên đây các bạn có thể ìm hiểu cách sử dụng lệnh grep trong hệ điều hành Linux để tìm kiếm và lọc dữ liệu trong các tệp tin và thư mục.