Sed là viết tắt của “Stream Editor” và đây là một tiện ích mạnh mẽ cho phép bạn phân tích cú pháp và chuyển đổi văn bản ngay từ dòng lệnh. Cho dù bạn đang xử lý các file cấu hình, script hay thậm chí là plain text, sed là công cụ hỗ trợ bạn thao tác văn bản nhanh chóng và hiệu quả.
Công dụng chính của sed là tìm kiếm các mẫu văn bản cụ thể và thay thế chúng bằng một nội dung khác. Nó cũng có thể xóa hoặc chèn dòng và thực hiện các chuyển đổi văn bản khác. Nó đặc biệt hữu ích cho việc chỉnh sửa hàng loạt file hoặc làm việc trong các shell script để tự động hóa những tác vụ khác nhau.
Mặc dù bản thân sed cực kỳ linh hoạt nhưng nó thường được sử dụng kết hợp với các lệnh Linux khác như awk để xử lý văn bản, grep để tìm kiếm mẫu và cat để hiển thị nội dung file. Cùng với nhau, những công cụ này tạo thành một bộ công cụ mạnh mẽ để xử lý văn bản trong môi trường Linux.
Cú pháp chung cho lệnh sed:
$ sed [OPTIONS] [FILE]...
1. Thay thế văn bản
echo "Text" | sed 's/Replaceable_Word/The_Word_That_Replaces/'
Sử dụng lệnh sed để tìm kiếm và thay thế bất kỳ phần nào của văn bản. 's' biểu thị tác vụ tìm kiếm và thay thế.
Ví dụ, giả sử bạn có một chuỗi “I love CSS” và bạn muốn thay thế “CSS” bằng “CSS Libraries“.
echo "I love CSS" | sed 's/CSS/CSS Libraries/'
I love CSS Libraries
Trong ví dụ này, lệnh echo xuất ra “I love CSS“, sau đó sed thay thế “CSS” bằng “CSS Libraries“. Kết quả cuối cùng là “I love CSS Libraries”.
2. Thay thế văn bản trên một dòng cụ thể trong file
sed '[line] s/harder/easier/g' [file]
Tùy chọn 'g' của lệnh sed được sử dụng để thay thế bất kỳ thứ gì phù hợp với mẫu.
Ví dụ, giả sử bạn có một file văn bản có tên example.txt với nội dung sau:
Life is hard.
Working harder is the key to success.
The harder you work, the luckier you get.
Để thay thế tất cả các lần xuất hiện của từ “harder” bằng “easier” trên dòng 2 của example.txt, bạn sẽ chạy:
sed '2 s/harder/easier/g' example.txt
Sau khi chạy lệnh, kết quả hiển thị trên terminal sẽ là:
Life is hard.
Working easier is the key to success.
The harder you work, the luckier you get.
Lưu ý rằng từ “harder” chỉ được thay thế bằng “easier” ở dòng 2.
Nếu muốn lưu lại những thay đổi này vào file, bạn có thể sử dụng tùy chọn -i:
sed -i '2 s/harder/easier/g' example.txt
Sau khi chạy lệnh này, nội dung của example.txt sẽ được thay đổi vĩnh viễn thành:
Life is hard.
Working easier is the key to success.
The harder you work, the luckier you get.
3. Thay thế kết quả khớp đầu tiên bằng văn bản mới
sed 's/harder/easier/' [file]
Lệnh này chỉ thay thế kết quả khớp đầu tiên của mẫu tìm kiếm.
Ví dụ, giả sử bạn có một file văn bản có tên example.txt với nội dung sau:
Life is harder than we think.
Working harder is the key to success.
No pain, no gain. Work harder.
Bạn có thể sử dụng lệnh sed để thay thế từ “harder” bằng “easier” ở mỗi dòng:
sed 's/harder/easier/' example.txt
Sau khi chạy lệnh, kết quả sẽ là:
Life is easier than we think.
Working easier is the key to success.
No pain, no gain. Work easier.
4. Xóa các dòng trùng khớp
sed '/Something/d' example.txt
Sử dụng tùy chọn d của lệnh sed để xóa bất kỳ dòng nào khỏi file.
Ví dụ, giả sử bạn có một file có tên example.txt với nội dung sau:
Hello World
Something is here
Another line
Yet another line
Something else
Chạy lệnh sed '/Something/d' example.txt
sẽ xuất ra:
Hello World
Another line
Yet another line
5. Tìm kiếm từ không phân biệt chữ hoa chữ thường + xóa nó
sed '/Sample/Id' example.txt
Tùy chọn I của lệnh sed được sử dụng để tìm kiếm mẫu phù hợp theo cách không phân biệt chữ hoa chữ thường.
Ví dụ, giả sử bạn có một file có tên exampleb.txt với nội dung sau:
This is a Sample line.
Another line.
Yet another Sample line.
Final line.
Chạy lệnh sed '/Sample/Id' example.txt
sẽ tạo ra kết quả đầu ra sau:
Another line.
Final line.
6. Thay thế các từ bằng chữ viết hoa
sed 's/\(libraries\)/\U\1/Ig' example.txt
Sử dụng tùy chọn U của lệnh sed để chuyển đổi bất kỳ văn bản nào thành chữ in hoa.
Ví dụ, giả sử bạn có một file có tên example.txt với nội dung sau:
I love libraries.
libraries are great.
You can find many books in libraries.
Sau khi chạy lệnh sed, kết quả sẽ là:
I love LIBRARIES.
LIBRARIES are great.
You can find many books in LIBRARIES.
7. Thay thế các từ bằng chữ viết thường
sed 's/\(libraries\)/\L\1/Ig' example.txt
Tùy chọn L của lệnh sed được sử dụng để chuyển đổi bất kỳ văn bản nào thành chữ thường.
Ví dụ, giả sử bạn có một file có tên example.txt với nội dung sau:
Libraries are essential for research.
libraries help in many ways.
I love LIBRARIES!
Sau khi chạy lệnh sed, kết quả sẽ là:
libraries are essential for research.
libraries help in many ways.
I love libraries!
8. Chèn dòng trống vào file
sed G [file]
Sử dụng tùy chọn G của lệnh sed để chèn dòng trống sau mỗi dòng của file.
Ví dụ, giả sử bạn có một file có tên example.txt với nội dung sau:
Hello
World
This
Is
A
Test
Bạn có thể chạy lệnh sau để thêm một dòng mới vào cuối mỗi dòng:
sed G example.txt
Sau khi chạy lệnh, kết quả sẽ là:
Hello
World
This
Is
A
Test
9. In số dòng của file
sed '=' [file]
Dấu = được sử dụng để in số dòng trước mỗi dòng văn bản trong một file.
Ví dụ, giả sử bạn có một file có tên example.txt với nội dung sau:
Hello
World
This
Is
A
Test
Bạn có thể chạy lệnh sau để in số dòng trước mỗi dòng:
sed '=' example.txt
1
Hello
2
World
3
This
4
Is
5
A
6
Test