Pipe (|) là gì? Các câu lệnh lọc dữ liệu file trong Linux
Pipe là gì? Cấu trúc của câu lệnh trong Linux như thế nào? Tham khảo hướng dẫn chi tiết về cách sử dụng các câu lệnh trong bài viết sau đây!
Câu lệnh trong hệ điều hành Linux chiếm một vai trò vô cùng quan trọng và không thể phủ nhận vai trò của chúng đối với việc quản lý và tương tác với hệ thống. Linux được thiết kế để hoạt động chủ yếu thông qua giao diện dòng lệnh và việc sử dụng câu lệnh là một phần không thể thiếu của trải nghiệm người dùng. Cùng tìm hiểu chi tiết Pipe là gì? cũng như các câu lệnh lọc dữ liệu trong Linux dưới đây nhé.
Trong phần trước chúng ta đã tìm hiểu về các thao tác với File và Folder trong Linux. Tiếp theo chúng ta sẽ tìm hiểu về Pipe và câu lệnh lọc dữ liệu trong hệ điều hành Linux.
1. Pipe là gì?
Trong hệ điều hành Linux, ký tự đường ống “(|)” được sử dụng để tạo ra một kết nối giữa các lệnh, cho phép dữ liệu từ lệnh này được chuyển tiếp trực tiếp đến lệnh khác mà không cần lưu trữ trung gian. Kỹ thuật này gọi là "pipe" và nó rất quan trọng trong việc xử lý dữ liệu và tương tác với hệ thống tập tin trong Linux.
Khi sử dụng ký tự đường ống, đầu ra của lệnh đứng trước ký tự “|” sẽ trở thành đầu vào cho lệnh đứng sau nó. Điều này cho phép người dùng kết hợp nhiều lệnh lại với nhau một cách linh hoạt để thực hiện các tác vụ phức tạp.
2. Cấu trúc câu lệnh trong Linux
Tất cả các câu lệnh mà bạn sử dụng trong Linux sẽ đều tuân theo cấu trúc trên hình ảnh phía trên, “pipe” là một phần cực kỳ quan trong. Ta hiểu nó như là một đường ống vậy. Kết quả của câu lệnh phía trước sẽ là đầu vào của câu lệnh phía sau.
3. Hướng dẫn sử dụng lệnh “grep” để lọc dữ liệu File
Lệnh “grep” là một công cụ mạnh mẽ trong Linux được sử dụng để tìm kiếm và lọc dữ liệu từ các tệp tin hoặc đầu ra của các lệnh khác, “grep” hoạt động dựa trên các biểu thức chính quy (regular expressions) để xác định các mẫu tìm kiếm.
grep -[options] [string] [file] |
Trong đó:
- options: chứa các tùy chọn để chỉnh hành vi của grep
- string: chứa các chuỗi tìm kiếm
- file: chứa đường dẫn hoặc tên file cần lọc
Một số options hay được dùng trong grep
- -i : tìm kiếm không phân biệt chữ hoa và chữ thường
- -w : tìm kiếm chính xác nội dung của string
- -v :tìm kiếm các dòng mà không có nội dung của string
- -c : đếm số lần xuất hiện của string trong file
- -o : chỉ hiển thị các phần của dòng chứa mẫu tìm kiếm
- -n : hiển thị số dòng với kết quả tìm kiếm
Ví dụ:
Thêm nội dung sau vao 1 file mới có tên “grep.txt”
Xin chao moi nguoi Day la Suncloud Moi nguoi thay bai viet nay the nao a Có thay hay khong a |
3. Hướng dẫn sử dụng lệnh “awk” để lọc dữ liệu File
Ngôn ngữ “awk” là một ngôn ngữ lập trình giúp chúng ta thao tác dễ dàng với kiểu dữ liệu có cấu trúc và tạo ra những kết quả được định dạng. Các bạn có thể hiểu như này cho đơn giản “awk” giúp các bạn lọc ra thông tin các cột trong bảng vậy.
Cấu trúc lệnh “awk”, đối với mỗi dòng, nó sẽ so khớp dòng ấy lần lượt với các pattern, nếu khớp thì sẽ thực hiện action tương ứng.
awk 'pattern { action }' file |
Trong đó:
- pattern: là những biểu thức chính quy
- actions: là những câu lệnh cần thực hiện
- file: file cần thực hiện lệnh awk
Một vài cách dùng awk thông dụng
- Dùng để in các dòng trong file
awk '{print}' file.txt |
- Xử lý trường:
- $0: Chứa toàn bộ văn bản
- $1: Chứa văn bản trường đầu tiên
- NF: là một biến tích hợp có chứa số lượng các trường trong bản ghi hiện tại
awk '{print $2}' file.txt |
- Phép so sánh
awk '$1 > 200' file1.txt |
- Cú pháp điều kiện: kiểm tra điều kiện nếu biến $4 so khớp với xâu ký tự Technology thì sẽ in ra dòng tương ứng
awk '$4 ~ /Technology/' employee.txt |
- Lọc các kí tự: được đặt trong dấu “//”, nếu dòng nào có ký tự trùng thì in ra
awk '/are/' file2.txt |
4. Một số lưu ý
“Grep” và “awk” là 2 câu lệnh công cụ cực kỳ hữu ích trong việc lọc ra dữ liệu file. Nhưng để sử dụng thành thạo vào hiệu quả 2 câu lệnh này không phải là chuyện dễ dàng. Mình có 1 mẹo giúp bạn kết hợp “pipe” cùng với “grep” và “awk” để có thể lọc được dữ liệu file một cách hiệu quả. Đó là hãy dùng lệnh “grep” để lọc các dòng mong muốn sau đó mới dùng “awk” để lọc các trường mình cần mà “grep” đã lọc được. Mình gọi đây là lọc 2 lớp nhưng các bạn có thể áp dụng tương tự với lọc 3, 4 lớp để được kết quả của yêu cầu bài toán.
5. Thực hành với các bài toán nâng cao
Trên hầu hết các máy khi các bạn SSH vào thì nó sẽ được lưu lại nhật ký ở trong file /var/log/sercure. Các bạn hãy lọc xem trong 1 tiếng vừa rồi đã đã có ai đăng nhập thành công vào máy. Lưu ý rằng để có thể xem file này ta cần dùng quyền root nhé.
- Những ai đăng nhập thành công thì trên dòng ghi lại nhật ký sẽ có “Accepted password” và kèm theo thời gian đăng nhập.
- Tiếp theo ta sẽ dùng “awk” để lọc và in ra những trường chứa thông tin user đăng nhập.
Đây là câu lệnh ta thu được khi đã áp dụng “awk “ và “grep”
cat /var/log/secure|grep "Accepted password"|grep "Jan 21 23"|awk '{print $9 $11}' |
Kết luận
Đến đây là kết thúc bài tập hướng dẫn các bạn dung câu lệnh lọc dữ liệu file trong Linux. Hy vọng qua những hướng dẫn chi tiết này, bạn đã hiểu rõ Pipe là gì và có thể thao tác thành công trên máy chủ Linux của mình. Cùng trở lại suncloud.vn để cập nhật thêm các kiến thức bổ ích khác về hệ điều hành Linux trong phần sau nhé.