Як видалити символи в середині рядка в bash


12

У bash у мене є рядок, і я намагаюся видалити символ посередині рядка. Я знаю, що ми можемо видалити символи з початку або в кінці рядка так:

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

але як я можу видалити той посередині?

Відповіді:


18

Якщо ви знаєте, які символи (и) потрібно видалити, ви можете використовувати підстановку в розширенні параметрів:

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

Або якщо ви знаєте, які символи потрібно зберегти:

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

Або, якщо ви знаєте посаду:

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

Що робити, якщо ви й цього не знаєте? Що робити, якщо ви просто знаєте, що хочете зберегти Y і S?
Rutger Huijsmans

@RutgerHuijsmans: Перевірте оновлення.
choroba
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.