12

我得到以下变量:

set location "America/New_York"

并且只想使用shell 语法/显示(斜杠)之前的部分。fish

预期结果

美国

Bash 等价物

使用 bash,我只是使用了参数扩展:

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

问题

我该怎么做fish

4

3 回答 3

17

从 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或者,像,sedawk所有的外部工具也可以。

于 2015-12-09T21:14:37.527 回答
3

一个可能的解决方案是使用cut,但是,这看起来很骇人听闻:

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

美国

于 2015-12-09T20:18:23.040 回答
1

使用字段选择-fstring 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
于 2021-06-09T11:49:36.507 回答