Как извлечь подстроку в оболочке Рыба?

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

set location "America/New_York"

и хотите отобразить только часть до / (косая черта) используя fish Синтаксис оболочки.

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

Америка

Баш эквивалент

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

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

Вопрос

Как мне это сделать в fish -путь?

3 ответа

Решение

В настоящее время в выпуске нет встроенной манипуляции со строками, поэтому вам придется использовать внешние инструменты, такие как cut или же sed или же awk,

В настоящее время мастер рыбы, есть встроенный string имеет несколько подкоманд, включая replaceтак что вы сможете сделать

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

или же

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

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

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

Америка

Используйте селектор полей -f из string split

      > string split / "America/New_York" -f1
America

и соответственно:

      set location (string split / "America/New_York" -f1)

Примечание: для последней строки с несколькими косыми чертами я не знаю ничего лучше, чем громоздкий -r -m1 -f2:

      > string split / "foo/bar/America/New_York" -r -m1 -f2
New_York
Другие вопросы по тегам