Как извлечь подстроку в Fish shell?

Я получил следующую переменную:

set location "America/New_York"

и хотите отображать только часть перед / (косой чертой) с использованием синтаксиса оболочки fish.

Ожидаемый результат

Америка

Bash эквивалент

Используя bash, я просто использовал расширение параметра:

location="America/New_York"
echo ${location##*/}"

Вопрос

Как это сделать в fish -way?

Ответ 1

Начиная с fish 2.3.0, есть встроенная string которая имеет несколько подкоманд, включая replace, так что вы сможете сделать

string replace -r "/.*" "" -- $location

или же

set location (string split "/" -- $location)[1]

См. Http://fishshell.com/docs/current/commands.html#string.

Кроме того, внешние инструменты, такие как cut, sed или awk работают.

Ответ 2

Возможное решение - использовать cut, но выглядят хакерскими:

set location "America/New_York"
echo $location|cut -d '/' -f1

Америка