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

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

Làm thế nào:

# Xóa số từ một chuỗi
set string "Fish123Shell"
echo $string | string replace -ra '[0-9]' ''
# Kết quả: FishShell

# Loại bỏ tất cả trừ các chữ cái thường
set noisy_string "F!i@s#h$%S^h&e*l(l)__+"
echo $noisy_string | string match -r '[a-z]+'
# Kết quả: ishhell

Đi sâu hơn

Trong Fish Shell, điều kỳ diệu xảy ra với tiện ích string, một công cụ tiện lợi có sẵn cho các thao tác chuỗi - được giới thiệu trong phiên bản 2.3.0. Trước đây, người dùng sẽ phải dùng đến các công cụ UNIX quen thuộc như sed hoặc awk. Tại sao lại thay đổi? Sự đơn giản và tích hợp. Có một giải pháp nội bộ làm cho việc thao tác chuỗi trở nên đơn giản hơn, khiến các script dễ đọc và bảo trì hơn.

Có lựa chọn khác không? Chắc chắn, sed cũ kỹ vẫn có thể làm được việc:

set old_school_string "Fish@Shell2023"
echo $old_school_string | sed 's/[0-9]//g'
# Kết quả: Fish@Shell

Nhưng tại sao không tận dụng công cụ của chính Fish? Để thực hiện, string replace có tùy chọn -r cho phép sử dụng mẫu regex. -a áp dụng lệnh cho tất cả các trận đấu, và thêm một ’’ ở cuối báo hiệu cho nó thay thế bằng không cái gì, tức là xóa. Sử dụng string match khi tìm kiếm một mẫu cần giữ, thay vì cái cần bỏ.

Xem thêm