Lệnh Linux: Sử dụng sed để thay thế ký tự replace string

Đặc biệt chú ý khi dùng sed bạn phải chắc chắn file nguồn thuần định dạng Linux. Bạn có thể tham khảo vấn đề đó ở link này.

Công thức sử dụng:

sed -i "s/ky-tu-cu/ky-tu-moi/g" taptin.txt

Trong đó:

ky-tu-cu là ký tự cũ cần được thay thế bằng ký tự mới

ky-tu-moi là ký tự cần được thêm vào tập tin thay thế cho ký tự cũ

Ví dụ chúng ta tạo một tập tin taptin.txt có nội dung như sau:

nano taptin.txt

Ban la
nguoi dep
nhat Viet nam

Bây giờ chúng ta cần thay thế từ Ban thành từ Toi

sed -i "s/Ban/Toi/g" taptin.txt

Xem lại tập tin:

cat taptin.txt

Toi la
nguoi dep
nhat Viet nam

Trong ví dụ trên từ Ban chính là từ khóa để tìm kiếm và thay thế.

Thay thế cả một hàng có chứa từ khóa:

Xem lại tập tin, ta vẫn có:

cat taptin.txt

Toi la
nguoi dep
nhat Viet nam

Bây giờ ta muốn thay thế cả một hàng cho bất kỳ hàng nào có chứa ký tự Toi thành Chung ta can tim mot chúng ta có công thức như sau:

sed -i "s/.*ky-tu-cu.*/ky-tu-moi/" taptin.txt

Thay thế các ký tự cũ và mới vào công thức:

sed -i "s/.*Toi.*/Chung ta can tim mot/" taptin.txt

Kiểm tra lại nội dung tập tin:

cat taptin.txt

Chung ta can tim mot
nguoi dep
nhat Viet nam

Thay thế bằng biến:

Ví dụ bạn có biến s="ky-tu-cu"r="ky-tu-moi" giờ bạn muốn replace vào trong tập tin đó thì chúng ta có công thức như sau:

s='ky-tu-cu'
r='ky-tu-moi'
sed -i "s#$s#$r#g" taptin.txt

Chẳng hạn ta muốn thay thế trở lại như cũ Chung ta can tim mot thành Ban la:

s='Chung ta can tim mot'
r='Ban la'
sed -i "s#$s#$r#g" taptin.txt

Kiểm tra lại tập tin:

cat taptin.txt

Ban la
nguoi dep
nhat Viet nam

Bạn chú ý đây chỉ mới là 3 cách sử dụng cơ bản sed trong Linux, với các trường hợp khác bạn có thể tham khảo thêm ở đây.

Cám ơn bạn đã đọc hết bài viết, hãy bấm chia sẻ lên mạng xã hội để nhớ rằng bạn đã từng nắm được kiến thức do bài viết này cung cấp rồi:
Share

Trả lời

Email của bạn sẽ không được hiển thị công khai.