Cách xóa ký tự ở giữa chuỗi trong bash


12

Trong bash tôi có một chuỗi và tôi đang cố xóa một ký tự ở giữa chuỗi. Tôi biết chúng ta có thể xóa các ký tự từ đầu hoặc cuối chuỗi như thế này:

myVar='YES'
myVar="${myVar#'Y'}"
myVar="${myVar%'S'}"

nhưng làm thế nào tôi có thể loại bỏ cái ở giữa?

Câu trả lời:


18

Nếu bạn biết (các) ký tự cần loại bỏ, bạn có thể sử dụng thay thế trong mở rộng tham số:

myVar=${myVar/E}  # Replace E with nothing

Hoặc, nếu bạn biết những ký tự nào cần giữ:

myVar=${myVar/[^YS]}  # Replace anything but Y or S

Hoặc, nếu bạn biết vị trí:

myVar=${myVar:0:1}${myVar:2:1}  # The first and third characters

Nếu bạn không biết thì sao? Nếu bạn chỉ muốn giữ Y và S thì sao?
Rutger Huijsmans

@RutgerHuijsmans: Kiểm tra cập nhật.
choroba
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.