Dùng đường ống với grep
Thuộc phần Kiến thức cơ bản trong hành trình Terminal của Coddy. Bài học 46 trên 82.
Lệnh grep trở nên đặc biệt mạnh mẽ khi kết hợp với pipe. Thay vì tìm kiếm trong một tệp, bạn có thể lọc đầu ra của bất kỳ lệnh nào để tìm chính xác nội dung mình cần.
Hãy tưởng tượng bạn muốn tìm một tệp cụ thể trong danh sách thư mục:
ls -l | grep "report"Lệnh này liệt kê chi tiết tất cả các tệp, sau đó lọc để chỉ hiển thị những dòng có chứa "report". Bạn nhận được kết quả chính xác mà không cần tự dò qua mọi thứ.
Chuyển đầu ra qua grep có thể dùng với mọi lệnh tạo ra văn bản. Để tìm các tiến trình đang chạy liên quan đến một chương trình cụ thể:
ps aux | grep "python"Bạn cũng có thể kết hợp grep với những lệnh khác đã học. Để đếm số dòng chứa một từ cụ thể:
cat logfile.txt | grep "error" | wc -lLệnh này đọc tệp, lọc các dòng có "error", rồi đếm số dòng đó. Các cờ grep bạn đã học trước đây cũng hoạt động tương tự trong đường ống: dùng -i để tìm kiếm không phân biệt chữ hoa chữ thường hoặc -v để loại trừ các kết quả khớp.
Thử thách
DễTệp access.log chứa các bản ghi truy cập máy chủ web. Dùng dấu pipe để lọc và đếm số yêu cầu có mã trạng thái lỗi 500.
Chạy một lệnh duy nhất để:
- Dùng
catđể đọcaccess.log - Dùng dấu pipe để chuyển kết quả sang
grepnhằm lọc các dòng chứa500 - Dùng dấu pipe để chuyển kết quả sang
wc -lnhằm đếm các dòng khớp
Gợi ý: Nối ba lệnh với nhau bằng ký hiệu
|. Lệnh grep lọc đầu ra, cònwc -lđếm số dòng còn lại.
Tự làm thử
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Kiến thức cơ bản
4Thư mục
Tạo thư mụcSao chép thư mụcDi chuyển và đổi tên thư mụcXóa thư mụcÔn tập: thao tác với thư mục2Điều hướng
In đường dẫn thư mục hiện tạiLiệt kê tệpChuyển thư mụcĐường dẫn tuyệt đối và tương đốiThư mục chính và thư mục gốcÔn tập: tìm đường8Chuyển hướng
Đầu ra chuẩnGhi đè vào tệpGhi thêm vào tệpĐầu vào chuẩnLỗi chuẩnÔn tập: Công cụ tạo nhật ký6Ký tự đại diện và mẫu
Ký tự đại diện dấu saoKý tự đại diện dấu hỏiKý tự đại diện trong ngoặc vuôngKết hợp ký tự đại diệnÔn tập: thao tác có chọn lọc9Đường ống
Đường ống là gìNối hai lệnh bằng đường ốngNối nhiều lệnh bằng đường ốngDùng đường ống với grepÔn tập: luồng xử lý dữ liệuTự luyện tập: Playground Terminal