Удаление символов, соответствующих шаблону

Fish Shell:
Удаление символов, соответствующих шаблону

Как это сделать:

# Удалить цифры из строки
set string "Fish123Shell"
echo $string | string replace -ra '[0-9]' ''
# Выводит: FishShell

# Удалить все кроме строчных букв
set noisy_string "F!i@s#h$%S^h&e*l(l)__+"
echo $noisy_string | string match -r '[a-z]+'
# Выводит: ishhell

Подробнее

В Fish Shell магия происходит с помощью утилиты string, удобного встроенного инструмента для работы со строками - представленного в версии 2.3.0. До этого пользователи обращались к стандартным инструментам UNIX, таким как sed или awk. Почему изменения? Простота и интеграция. Наличие собственного решения упрощает манипуляции со строками, делая скрипты более читаемыми и удобными для поддержки.

Альтернативы? Конечно, старая добрая утилита sed все еще может справиться с задачей:

set old_school_string "Fish@Shell2023"
echo $old_school_string | sed 's/[0-9]//g'
# Выводит: Fish@Shell

Но почему бы не использовать собственные инструменты Fish? Для реализации string replace имеет опцию -r, позволяющую использовать регулярные выражения. -a применяет команду ко всем совпадениям, а добавление ’’ в конце говорит о том, чтобы заменить на ничего, т. е., удалить. Используйте string match, когда ищете шаблон для сохранения, а не для удаления.

Смотрите также