Câu 1Điều gì được hiển thị khi bạn chạy grep error log.txt?
Tìm kiếm văn bản — grep
Học cách tìm các dòng chứa chuỗi, cùng khi nào dùng -i để bỏ qua hoa thường, -n cho số dòng, và -r để tìm kiếm đệ quy — thực hành ngay trên terminal trong trình duyệt.
Tìm kiếm chuỗi — grep
grep là lệnh lọc ra và hiển thị chỉ những dòng trong tệp chứa chuỗi cho trước.
Dùng như grep chuỗi-tìm kiếm tênfile, và nếu có dòng khớp, chúng in ra màn hình nguyên trạng.
Dùng nó để tìm đúng những dòng bạn cần từ một log lớn.
grep lọc ra chỉ những dòng chứa chuỗi cho trước, và không xuất phần còn lại.echo 'error: disk full' > log.txt # tạo dòng 1
echo 'info: started' >> log.txt # nối thêm
echo 'error: timeout' >> log.txt # nối thêm
grep error log.txt # 2 dòng chứa error
grep info log.txt # 1 dòng chứa info
Bỏ qua hoa thường — -i / Số dòng — -n
grep phân biệt chữ hoa và chữ thường.
Thêm -i để tìm kiếm không phân biệt, nhờ vậy bạn có thể bắt cả Error lẫn error.
Thêm -n và số dòng được hiển thị trước mỗi dòng khớp, để bạn biết nó ở đâu trong tệp.
-i và -n có thể kết hợp và áp dụng cùng lúc, như grep -in error app.txt.
| Tùy chọn | Ý nghĩa | Ví dụ |
|---|---|---|
-i | Không phân biệt chữ hoa và chữ thường | grep -i error log.txt |
-n | Thêm số dòng trước mỗi kết quả khớp | grep -n error log.txt |
-v | Hiển thị những dòng không khớp | grep -v info log.txt |
-r | Tìm kiếm thư mục đệ quy | grep -r TODO src |
echo 'Error in disk' > app.txt # tạo dòng 1
echo 'error in app' >> app.txt # nối thêm
echo 'ok' >> app.txt # nối thêm
grep -i error app.txt # 2 dòng Error và error
grep -n error app.txt # 2:error in app (kèm số dòng)
Loại trừ dòng không khớp — -v
Thêm -v và grep hiển thị những dòng không chứa chuỗi cho trước.
Trong khi grep thông thường giữ các dòng khớp, -v loại bỏ các dòng khớp và xuất phần còn lại.
Dùng nó khi bạn muốn đọc log với các dòng không cần thiết (như info hay debug) bị loại bỏ.
-v loại trừ những dòng chứa chuỗi cho trước và chỉ hiển thị phần còn lại.echo 'error: disk full' > log.txt # tạo dòng 1
echo 'info: started' >> log.txt # nối thêm
echo 'error: timeout' >> log.txt # nối thêm
grep -v info log.txt # 2 dòng không chứa info
Tìm kiếm thư mục đệ quy — -r
Khi bạn muốn tìm kiếm không chỉ một tệp mà mọi tệp trong một thư mục, thêm -r và truyền tên thư mục thay vì tên tệp.
Nó đi xuống các thư mục con đệ quy và hiển thị các dòng khớp theo dạng tênfile:dòng.
grep -r bắt đầu từ src bạn truyền vào và đi xuống thư mục con src/sub để tìm kiếm mọi tệp.mkdir -p src/sub # tạo thư mục dữ liệu
echo 'TODO: fix later' > src/a.txt # 1 tệp trong thư mục cha
echo 'TODO: review' > src/sub/b.txt # 1 tệp trong thư mục con
grep -r TODO src # tìm kiếm đệ quy dưới src
Kiểm tra kiến thức
Hãy trả lời từng câu hỏi một.
Câu 2Tùy chọn nào bạn thêm vào grep để tìm kiếm không phân biệt chữ hoa và chữ thường?
Câu 3grep hoạt động như thế nào khi bạn thêm -r và truyền thư mục?