Tìm hiểu về hai lệnh sed và awk trong linux

  • Friday 19/01/2024

Hệ điều hành hoạt động như một giao diện giữa người dùng và các thiết bị phần cứng. Máy tính không thể thực hiện bất kỳ tác vụ nào nếu không có hệ điều hành. Có rất nhiều hệ điều hành và UNIX là một trong số đó. Nó là một hệ điều hành ổn định hỗ trợ môi trường nhiều người dùng. Linux là một hệ điều hành phổ biến khác dựa trên UNIX. Cả UNIX và Linux đều cung cấp Giao diện dòng lệnh (CLI) mạnh mẽ . Người dùng có thể nhập lệnh vào CLI để thực hiện các tác vụ khác nhau. Có một số lượng lớn các lệnh, và sed và awk là hai trong số đó. Các lệnh này giúp lọc và chuyển đổi văn bản.

Sự khác biệt chính giữa sed và awk là sed là một lệnh dùng để tìm kiếm, lọc và xử lý văn bản trong khi awk mạnh mẽ và chắc chắn hơn sed với các cấu trúc lập trình phức tạp như if/else, while, do/while.

1. sed là gì

Sed là một trình chỉnh sửa dòng, thường được sử dụng để thay đổi văn bản trong các tệp. Nó được viết tắt từ “stream editor”. Sed đọc từng dòng văn bản từ đầu vào, thực hiện các thay đổi đã được chỉ định và sau đó xuất ra kết quả. Các thay đổi được xác định bằng các biểu thức chính quy (regex).

Cú pháp cơ bản của lệnh sed như sau:

sed [options] 'command' file

Trong đó:

  • options là các tùy chọn để tùy chỉnh hoạt động của sed, chẳng hạn như -n để tắt chế độ in dòng mặc định hoặc -i để thay đổi trực tiếp tệp đầu vào.
  • command là một hoặc nhiều lệnh sẽ được thực hiện cho mỗi dòng của tệp file.

Ví dụ:
sed '1,3 d' test1.txt

Lệnh trên sẽ hiển thị các dòng sau dòng 3. Nó sẽ không hiển thị dòng 1, 2, 3 của file test1.txt.
sed awk
sed 's/3/2/' test1.txt

Lệnh trên sẽ thay thế 2 thay vì 3 trong file test1.txt.

sed 's/1/one/' test1.txt

Lệnh trên sẽ thay thế one thay vì 1 trong file test1.txt.

sed '1,2 ! d' test1.txt

Lệnh này sẽ chỉ hiển thị dòng 1 và dòng 2 của file test1.txt

Đó là một vài ví dụ cho sed. Nhìn chung, sed cho phép người dùng thực hiện lọc và tìm kiếm.

2. awk là gì

Lệnh awk cho phép tìm kiếm dữ liệu trong file và in dữ liệu trên console. Nếu một tệp chứa nhiều cột thì cũng có thể tìm thấy dữ liệu trong các cột cụ thể. Hơn nữa, nó còn hỗ trợ các tác vụ như tìm kiếm, thực thi có điều kiện, cập nhật và lọc.

Cú pháp cơ bản của lệnh awk như sau:

awk '{action}' file

Trong đó:

  • action là một hoặc nhiều câu lệnh sẽ được thực hiện cho mỗi dòng của tệp file.

 

Một số ví dụ:

awk '{print}' test2.txt
Lệnh trên sẽ hiển thị toàn bộ nội dung trong test2.txt  

Giả sử rằng tệp test2.txt chứa nhiều cột.

awk '{print $1}' test2.txt

Lệnh này in cột đầu tiên của test2.txt. Theo mặc định, lệnh awk coi khoảng trắng là dấu phân cách.
sed awk

awk '{print $1 " " $3}' test2.txt
Lệnh trên in cột đầu tiên và cột thứ ba của test2.txt có khoảng trắng ở giữa.
sed awk

 

awk '/four/ {print}' test2.txt
Lệnh trên in tất cả các dòng trong file test2.txt có chứa từ four.

sed và awk

awk '/[3-5]/ {print}' test2.txt

Lệnh trên in tất cả các dòng trong file test2.txt chứa các số từ 3 đến 5.

Đó là một số ví dụ về awk.

Nhìn chung, awk là một lệnh mạnh mẽ để xử lý và phân tích tệp văn bản.

3. Sự khác biệt giữa sed và awk

Sed và awk là hai công cụ dòng dòng mạnh mẽ được sử dụng để thao tác và xử lý văn bản trong Linux. Cả hai công cụ đều sử dụng biểu thức chính quy để xác định văn bản cần thay đổi hoặc xóa. Tuy nhiên, giữa hai công cụ này cũng có một số điểm khác biệt cơ bản.

Sed

  • Sed là một trình chỉnh sửa dòng dòng. Nó đọc từng dòng văn bản từ đầu vào, thực hiện các thay đổi đã được chỉ định và sau đó xuất ra kết quả.
  • Sed được sử dụng tốt nhất cho các tác vụ thay thế hoặc xóa văn bản đơn giản.
  • Sed sử dụng một cú pháp dựa trên lệnh. Các lệnh sed được chỉ định bằng cú pháp command.
  • Sed cung cấp một số tùy chọn để tùy chỉnh hoạt động của nó.

Awk

  • Awk là một ngôn ngữ lập trình kịch bản. Nó đọc từng dòng văn bản từ đầu vào và thực hiện các hành động được chỉ định.
  • Awk được sử dụng tốt nhất cho các tác vụ xử lý văn bản phức tạp hơn, chẳng hạn như lọc, phân tích và tạo báo cáo.
  • Awk sử dụng một cú pháp dựa trên ngôn ngữ lập trình. Các hành động awk được chỉ định bằng các cú pháp như {action}.
  • Awk cung cấp một số biến và hàm tích hợp để giúp bạn thao tác dữ liệu.

So sánh

Tính năng Sed Awk
Loại Trình chỉnh sửa dòng  Ngôn ngữ lập trình kịch bản
Mục đích Thay thế hoặc xóa văn bản đơn giản Xử lý văn bản phức tạp
Cú pháp Dựa trên lệnh Dựa trên ngôn ngữ lập trình
Tùy chọn

Kết luận

Sed và awk là hai công cụ mạnh mẽ có thể được sử dụng để thao tác và xử lý văn bản trong Linux. Lựa chọn công cụ nào phụ thuộc vào nhu cầu cụ thể của bạn. Nếu bạn cần thực hiện các tác vụ thay thế hoặc xóa văn bản đơn giản, thì sed là một lựa chọn tốt. Nếu bạn cần thực hiện các tác vụ xử lý văn bản phức tạp hơn, chẳng hạn như lọc, phân tích và tạo báo cáo, thì awk là một lựa chọn tốt hơn.

Tham khảo thêm các bài viết khác tại đây.
 = =  = =  = =  = =  = =  = =  = =  = =  = =  = =  = =  = =  = =  = =  = =  = =  = = 
P.A Việt Nam cung cấp đa dạng các cấu hình Máy Chủ Ảo và Máy Chủ Riêng
Cloud Server
Cloud Server Pro
Máy Chủ Riêng

Tham khảo các ưu đãi: https://www.pavietnam.vn/vn/tin-khuyen-mai/

Rate this post