Попытка очистить переменную PYTHONPATH
которая имеет общий синтаксис:
/a/path:/another/path/:/one/more/path
Я хочу удалить все пути, начинающиеся с /mnt
. Сначала попробуйте с sed
:
sed 's,/mnt/[^:]\+:,,g' <<< $PYTHONPATH
Он удаляет все вхождения, начинающиеся с /mnt/
, за которыми следуют один или несколько символов, кроме двоеточия и последующего символа двоеточия.
Это, однако, не удастся для следующего примера:
PYTHONPATH="/mnt/first/path:/mnt/second/path"
потому что второй путь не заканчивается двоеточием. Я не мог родить ничего лучше, чем запустить другой поиск с немного другим условием:
sed 's,/mnt/[^:]\+:,,g;s,/mnt/.*$,,g' <<< $PYTHONPATH
Так что теперь, после удаления всех вхождений, заканчивающихся двоеточием, другой прогон удаляет все вхождения (на самом деле их не более одного), которые начинаются с /mnt/
и заканчиваются концом строки.
Вопросы:
- Для задачи это приемлемое решение?
- Есть ли особый случай, когда приведенное выше решение не поможет?
- Возможно ли здесь одно поисковое решение? Просто любопытно.
Заранее спасибо!