Xóa các ký tự phù hợp với một mẫu

Bash:
Xóa các ký tự phù hợp với một mẫu

Cách thực hiện:

Xóa khoảng trắng đầu/cuối:

text="   Xin chào, Thế giới!   "
trimmed=$(echo "$text" | xargs)
echo "$trimmed"

Kết quả: Xin chào, Thế giới!

Loại bỏ tất cả các chữ số:

text="B4sh i5 tuyệt vờ1!"
cleaned=${text//[^a-zA-Z ]/}
echo "$cleaned"

Kết quả: Bsh i tuyệt vờ

Thay thế các ký tự cụ thể:

text="Xin chào-Thế giới!"
cleaned=${text//-/_}
echo "$cleaned"

Kết quả: Xin chào_Thế giới!

Sâu hơn

Ban đầu, các công cụ xử lý văn bản như sedawk là điểm đến cho việc thao tác chuỗi. Bash đã kể từ đó kết hợp khả năng phù hợp mẫu và thao tác chuỗi trực tiếp vào chính bảng điều khiển, cung cấp cho người dùng nhiều quyền lực mà không cần đến các lệnh bên ngoài.

Cú pháp ${parameter/pattern/string} là một phương pháp, nơi bạn thay thế phù hợp đầu tiên của pattern bằng string. Để xóa tất cả các trận đấu, chỉ cần thêm một / nữa như đã hiển thị trong các ví dụ trên.

Các phương án thay thế bao gồm việc sử dụng các công cụ UNIX cổ điển như sed, awk, tr, hoặc các ngôn ngữ kịch bản hiện đại hơn như Python hoặc Perl.

Phần cốt lõi, Bash sử dụng globbing và các ký tự đại diện cho phù hợp mẫu, nhưng khi bạn thấy những cấu trúc ${text//pattern/}, bạn đang đối mặt với sự mở rộng tham số của Bash - một tính năng cực kỳ hữu ích để thao tác chuỗi.

Xem Thêm