Jak usunąć postacie w środku ciągu w bash


12

W bash mam ciąg znaków i próbuję usunąć znak ze środka łańcucha. Wiem, że możemy usuwać znaki z początku lub końca takiego ciągu:

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

ale jak mogę usunąć ten w środku?

Odpowiedzi:


18

Jeśli wiesz, które znaki należy usunąć, możesz użyć podstawienia w rozszerzaniu parametrów:

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

Lub jeśli wiesz, jakie postacie zachować:

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

Lub jeśli znasz pozycję:

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

Co jeśli ty też nie wiesz? Co jeśli wiesz, że chcesz zachować Y i S?
Rutger Huijsmans

@RutgerHuijsmans: Sprawdź aktualizację.
choroba
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.