我得到以下变量:
set location "America/New_York"
并且只想使用shell 语法/
显示(斜杠)之前的部分。fish
预期结果
美国
Bash 等价物
使用 bash,我只是使用了参数扩展:
location="America/New_York"
echo ${location##*/}"
问题
我该怎么做fish
?
我得到以下变量:
set location "America/New_York"
并且只想使用shell 语法/
显示(斜杠)之前的部分。fish
美国
使用 bash,我只是使用了参数扩展:
location="America/New_York"
echo ${location##*/}"
我该怎么做fish
?
从 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
所有的外部工具也可以。
一个可能的解决方案是使用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