Đọc dòng có 01 trong file trong linux

Grep là từ viết tắt của Global Regular Expression Print. Lệnh grep trong Linux được sử dụng để tìm kiếm một chuỗi ký tự trong một file được chỉ định. Lệnh grep trong Linux sẽ rất tiện lợi khi tìm kiếm các file log lớn.

Nội dung

Sử dụng lệnh grep trong Linux

Lệnh grep bao gồm ba phần ở dạng cơ bản nhất của nó. Phần đầu tiên sẽ bắt đầu bằng grep, sau đó là mẫu bạn tìm kiếm. Sau chuỗi là tên file mà grep sẽ phải tìm kiếm.

Cú pháp lệnh grep trong Linux đơn giản nhất sẽ như sau:

Lệnh sẽ có thể chứa nhiều tùy chọn, biến thể mẫu và tên file. Kết hợp nhiều tùy chọn nếu cần để có được kết quả bạn muốn. Dưới đây là các lệnh grep trong Linux phổ biến nhất và đi kèm với các ví dụ.

Dùng lệnh grep trong Linux để tìm kiếm một file

Để in bất kỳ dòng nào từ file có chứa một mẫu ký tự cụ thể, trong trường hợp này là Phoenix trong file sample2, hãy chạy lệnh:

grep phoenix sample2

Grep sẽ hiển thị mọi dòng có kết quả phù hợp với từ Phoenix. Khi thực hiện lệnh này, bạn không nhận được kết quả phù hợp chính xác. Thay vào đó, thiết bị đầu cuối in các dòng có các từ chứa chuỗi ký tự bạn đã nhập. Đây là một ví dụ:

Lưu ý: Nếu mẫu tìm kiếm của bạn bao gồm các ký tự không phải chữ và số, hãy sử dụng dấu ngoặc kép. Điều này bao gồm các khoảng trống hoặc bất kỳ ký hiệu nào.

Dùng lệnh grep trong Linux để tìm kiếm nhiều file

Để tìm kiếm nhiều file bằng lệnh grep, hãy chèn các tên file bạn muốn tìm kiếm, được ngăn cách bằng ký tự khoảng trắng.

Trong trường hợp này, lệnh rep để khớp với từ Phoenix trong ba file sample, sample 2 và sample 3 trông giống như ví dụ sau:

grep phoenix sample sample2 sample3

Thiết bị đầu cuối in ra tên của mọi file chứa các dòng phù hợp và các dòng phải bao gồm chuỗi ký tự bắt buộc.

Bạn có thể kết nối bao nhiều tên file nếu bạn cần. Thiết bị đầu cuối sẽ in ra một dòng với tên file cho mọi kết quả khớp mà nó tìm thấy trong các file được liệt kê.


Để quản lý log file bạ có thể tìm hiểu thêm về Logrotate.

Dùng lệnh grep trong Linux để tìm kiếm tất cả các file trong thư mục

Để tìm kiếm tất cả các file trong thư mục hiện tại, hãy sử dụng dấu hoa thị thay vì tên file ở cuối lệnh grep.

Trong ví dụ này, chúng tôi sử dụng nix làm tiêu chí tim kiếm:

grep nix *

Output hiển thị tên của file bằng nix và trả về toàn bộ các dòng.

Dùng lệnh grep trong Linux để tìm toàn bộ các từ

Lệnh grep chỉ cho phép bạn tìm và in kết quả cho toàn bộ từ. Để tìm kiếm từ Phoenix trong tất cả các file trong thư mục hiện tại, hãy thêm -w vào lệnh grep.

grep -w phoenix *

Tùy chọn này chỉ in các dòng có kết quả khớp toàn bộ từ và tên của các file mà nó tìm thấy:

Khi bỏ qua -w, grep sẽ hiển thị mẫu tìm kiếm ngay cả khi nó là một chuỗi con của một từ khác.

Nếu bạn muốn tìm kiếm nhiều chuỗi và các mẫu từ, hãy xem bài viết của chúng tôi về cách grep cho nhiều chuỗi, mẫu hoặc từ.

Dùng lệnh grep trong Linux để tìm kiếm thư mục con

Để bao gồm tất cả các thư mục con trong một tìm kiếm, hẫy thêm -r vào lệnh grep.

grep -r phoenix *

Lệnh này in các kết quả phù hợp cho tất cả các file trong thư mục hiện tại, thư mục con và đường dẫn chính xác với tên file. Trong ví dụ dưới đây, chúng tôi đã thêm -w để hiển thị toàn bộ các từ, nhưng output nó sẽ giống nhau.

Tìm kiếm grep ngược

Bạn có thể sử dụng grep để in tất cả các dòng không khớp với một mẫu ký tự cụ thể. Để tìm kiếm grep ngược, hãy thêm -v vào lệnh grep.

Để loại trừ tất cả các dòng có chứa phoenix, hãy nhập:

grep -v phoenix sample

Thiết bị đầu cuối in ra tất cả các dòng không chứa từ được sử dụng làm tiêu chí tìm kiếm. Sử dụng -i để bỏ qua chữ hoa chữ thường để loại trừ hoàn toàn từ được sử dụng cho tìm kiếm này:

Dùng lệnh grep trong Linux để hiển thị các dòng khớp chính xác với chuỗi tìm kiếm

Lệnh grep in toàn bộ dòng khi nó tìm thấy kết quả trùng khớp với một file. Để chỉ in những dòng hoàn toàn khớp với chuỗi tìm kiếm, hãy thêm tùy chọn -x.

grep -x “phoenix number3” *

Output chỉ hiển thị các dòng khớp chính xác. Nếu có bất kỳ từ hoặc ký tự nào khác trong cùng một dòng, grep sẽ không đưa nó vào kết quả tìm kiếm. Đừng quên sử dụng dấu ngoặc kép bất cứ khi nào có khoảng trắng hoặc ký hiệu trong mẫu tìm kiếm.

Dưới đây là so sánh các kết quả không có và với -x trong lệnh của chúng tôi:

Dùng lệnh grep trong Linux để liệt kê tên của các file phù hợp

Đôi khi, bạn chỉ cần xem tên của các file chứa một từ hoặc chuỗi ký tự và loại từ các dòng thực tế. Để chỉ in các tên file phù hợp với tìm kiếm của bạn, hãy sử dụng -l:

grep -l phoenix *

Kết quả hiển thị tên tệp chính xác có chứa Phoenix trong thư mục hiện tại nhưng không in ra các dòng có từ tương ứng:

Xin nhắc lại, hãy sử dụng tìm kiếm đệ quy -r để bao gồm tất cả các thư mục con trong tím kiếm của bạn.

Dùng lệnh grep trong Linux để hiển thị số dòng trước hoặc sau chuỗi tím kiếm

Đôi khi bạn cần thêm nội dung trong kết quả tìm kiếm để quyết định nội dung nào phù hợp nhất.

  • Sử dụng -A và một số dòng để hiển thị nếu phù hợp: lệnh grep – A sẽ in ra ba dòng sau chuỗi tìm kiếm.
  • Sử dụng -B và một số dòng để hiển thị nếu phù hợp: lệnh grep – B sẽ in ra hai dòng này trước chuỗi tìm kiếm.
  • Sử dụng -C và một số dòng để hiển thị nếu phù hợp: lệnh grep – C sẽ in ra hai dòng trước và sau trước chuỗi tìm kiếm.

Dùng lệnh grep trong Linux để giới hạn đầu ra grep ở một số dòng cố định

Các file riêng lẻ, chẳng hạn như file log, có thể chứa nhiều kết quả phù hợp cho các mẫu tìm kiếm grep. Giới hạn số dòng trong output của lệnh grep bằng cách thêm tùy chọn -m vào một số lệnh.

grep -m2 Phoenix sample

Trong trường hợp này, thiết bị đầu cuối in ra hai kết quả khớp đầu tiên mà nó tìm thấy trong file sample.

Nếu bạn không chỉ định một file và tìm kiếm tất cả các file trong một thư mục, output sẽ in ra hai kết quả đầu tiên từ mọi file cùng với tên file chứa các kết quả phù hợp.

Xem thêm: Các cấu lệnh trong Linux

Chia sẻ bài viết

Đánh giá

5/5 - [1 vote]

Nguyễn Hưng

Kết nối với mình qua

Mình là Bo - admin của Quản Trị Linux. Mình đã có 10 năm làm việc trong mảng System, Network, Security và đã trải nghiệm qua các chứng chỉ như CCNP, CISSP, CISA, đặc biệt là chống tấn công DDoS. Gần đây mình trải nghiệm thêm Digital Marketing và đã hòan thành chứng chỉ CDMP của PearsonVUE. Mình rất thích được chia sẻ và hỗ trợ cho mọi người, nhất là các bạn sinh viên. Hãy kết nối với mình nhé!

Chủ Đề