Hỏi - đáp Nơi cung cấp thông tin nghề nghiệp và giải đáp những thắc mắc thường gặp của bạn

Command Grep trong linux? Một số options thường hay dùng

Chắc hẳn là đối với các lập trình viên sử dụng hệ điều hành linux thì không còn xa lạ gì với lệnh grep. Nhưng với những bạn còn xa lạ thì sao? Bài viết này sẽ giúp các bạn mới tìm hiểu về lệnh grep có thể hiểu được lệnh grep làm gì? Tùy biến với các options như thế nào. Các options thường dùng của grep.

1.Grep?

grep là command hiển thị line chứa chuỗi kí tự trong file. Có thể chỉ định nhiều file hoặc nhiều đường dẫn của đối tượng search. Có thể thay file hoặc đường dẫn bằng kết quả output từ command khác. Đây là trường hợp hay được sử dụng khi dùng với grep

2.Một số lệnh và options thường dùng

Không sử dụng option

Lệnh cơ bản và hay gặp nhất khi bạn muốn tìm kiếm một chuỗi bất kì xuất hiện trong một file duy nhất hoặc nhiều file. Cú pháp command như sau:

$ grep "chuoi muon tim" ten_file_hoac_file_pattern

Kết quả tìm được sẽ hiển thị ngay trên command line.

ví dụ khi tìm chuỗi "ManhLD" trong file index.html:

$ grep "ManhLD" index.html
ManhLD
ManhLD

ví dụ khi tìm chuỗi "Salary" ở trong tất cả các file đã export vào tháng 8

$ grep "Salary" salary/export_08*
salary/export_08_01_2021.html:Salary
salary/export_08_02_2021.html:Salary
salary/export_08_03_2021.html:Salary

Option -i: tìm kiếm không phân biệt hoa thường

Giống như câu lệnh tìm chuỗi cơ bản ở trên, tuy nhiên khi khai báo thêm option -i, grep sẽ thực hiện tìm kiếm gần đúng theo kiểu không phân biệt ký tự hoa thường. Cú pháp command như sau:

$ grep -i "chuoi muon tim" ten_file_hoac_file_pattern

Nên cho dù chuỗi của bạn có "Hello word", "hEllO wORD" hay "HELLO word" đi nữa thì kết quả vẫn xuất hiện trên màn command line

Option -w: tìm chính xác cụm từ

Nếu bạn tìm kiếm theo những lệnh trên thì kết quả trả về sẽ chưa hẳn theo đúng mong muốn của bạn. Kết qủa thường sẽ thừa so với yêu cầu bởi vì grep sẽ tìm theo cả chuỗi con, ví dụ tìm con thì contact, concat cũng có chứa chuỗi con nên cũng sẽ trả về kết quả. Do đó, nếu bạn muốn tìm chính xác từ mong muốn thì có thể dùng lựa chọn -w

$ grep -w "chuoi muon tim" ten_file_hoac_file_pattern

Option -r: tìm tất cả các files ở tất cả thư mục con

Khi mà bạn không biết chính xác file muốn tìm hoặc thư mục của bạn có quá nhiều files hoặc đơn giản là bạn muốn tìm kiếm xem chuỗi xuất hiện ở trong file nào. Option grep -r sẽ tìm hết tất cả files ở tất cả các thư mục con

$ grep -r "chuoi muon tim" ten_file_hoac_file_pattern

Option -v: tìm những line không chứ từ khóa

Ngược với những options ở trên trả về line có chứa từ khoá. Thì với option -v, sẽ chỉ trả về những line không chứ từ khóa đó.

$ grep -v "chuoi" ten_file_hoac_file_pattern

Option -c: đếm số kết quả tìm được

Đơn giản là option này sẽ trả về có bao nhiêu kết quả tìm được. với số lượng kết quả hằng trăm, hàng ngàn thì option này giúp mình đỡ stress khi đến số line kết quả :v

$ grep -c "chuoi muon tim" ten_file_hoac_file_pattern

Option -l: hiển thị tên file chứa chuỗi

Trả về list tên file chứ chuỗi bạn muốn tìm:

$ grep -l "chuoi muon tim" ten_file_hoac_file_pattern

Option -n: hiện thị số thứ tự line kết quả

Đây là một option mình rất thường xuyên sử dụng, khi sử dụng sẽ trả về line kết quả kèm số thứ tự của line đó trong file. Điều này thực rất hữu ích đối với những file có số line hàng trăm hay hàng ngàn. Ngoài ra nhìn cũng đẹp mắt và trực quan hơn.

$ grep -n "chuoi muon tim" ten_file_hoac_file_pattern

Một trường hợp hay gặp

Lệnh mà đa số ai đang dùng linux đã dùng qua. Đôi khi service đang sử dụng vì lí do nào đó bị chết nhưng tiến trình vẫn đang chạy thì mình cần kill nó đi rồi restart lại. Lệnh này sẽ giúp biết được id của tiến trình để kill nó.

$ ps ux | grep elastichseach

Nguồn: Viblo