sed là viết tắt của “stream editor”. Nó đọc nội dung file, sửa đổi theo tham số lệnh sed. Mặc định, dữ liệu sẽ được ghi ra màn hình, nhưng bạn có thể ghi ra file mới hoặc chính file đó.
Cài đặt?
sed hầu như được cài đặt mặc định trên các hệ điều hành Linux/Unix. Tuy nhiên bạn có thể kiểm tra phiên bản được cài và cài đặt nếu chưa cài sẵn trên máy bằng lệnh
sed --version sudo apt-get install sed
Kết quả sẽ tương tự bên dưới
$ sed --version sed (GNU sed) 4.9 Copyright (C) 2022 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
Tìm và thay thế văn bản trong file bằng lệnh sed
Để replace text trong file bạn có thể dùng lệnh cơ bản như bên dưới trong Linux/Unix
sed -i 's/old-text/new-text/g' input.txt
Thay thế chuỗi xuất hiện lần thứ 2 mỗi dòng
sed -i 's/old-text/new-text/2' input.txt
Thêm dòng trồng vào mỗi dòng
sed G input.txt
Xóa dòng trồng mỗi dòng
sed ''/^$/d' input.txt
In ra các dòng với số thứ tự lẻ
sed -n '1~2p' input.txt
In ra các dòng với số thứ tự chẳn
sed -n '2~2p' input.txt
Thay thế chuỗi theo regular expression
# echo "Hello, Welcome to DevOpsify" | sed 's/\(\b[A-Z]\)/\(\1\)/g'
Kết quả sẽ ra: (H)ello, (W)elcome to (D)evOpsify
Một ví dụ khác, giả sử ta có file phone.txt như sau
(091)555-1212 (090)555-1213 (083)555-1214 (064)555-1215
Bạn có thể tách các giá trị và format lại như sau
cat phone.txt | sed 's/\(.*)\)\(.*-\)\(.*$\)/Ma vung: \1 Nhom 1: \2 Nhom 2: \3/' Ma vung: (091) Nhom 1: 555- Nhom 2: 1212 Ma vung: (090) Nhom 1: 555- Nhom 2: 1213 Ma vung: (083) Nhom 1: 555- Nhom 2: 1214 Ma vung: (064) Nhom 1: 555- Nhom 2: 1215