【发布时间】:2015-01-01 16:46:09
【问题描述】:
我正在尝试找到一种方法来从变量中提取文本,其中单词由正斜杠分隔。我尝试使用cut,所以这里有一个例子:
set variable = '/one/two/three/four'
假设我只想从中提取three,我使用了:
cut -d/ -f3 <<<"${variable}"
但这似乎行不通。关于我做错了什么的任何想法?或者有没有办法使用 AWK 来做到这一点?
【问题讨论】:
我正在尝试找到一种方法来从变量中提取文本,其中单词由正斜杠分隔。我尝试使用cut,所以这里有一个例子:
set variable = '/one/two/three/four'
假设我只想从中提取three,我使用了:
cut -d/ -f3 <<<"${variable}"
但这似乎行不通。关于我做错了什么的任何想法?或者有没有办法使用 AWK 来做到这一点?
【问题讨论】:
在字符串或变量赋值期间,您需要删除= 前后的空格。并告诉 cut 命令打印第 4 个字段。
$ variable='/one/two/three/four'
$ cut -d/ -f4 <<<"${variable}"
three
使用分隔符/,cut 命令将输入拆分。
/one/two/three/four
| | | | |
1 2 3 4 5
也就是说,当它在第一个斜杠上分割时,你会得到一个空字符串作为第一列。
【讨论】:
我认为这里的主要问题在于您的作业。试试这个:
var='/one/two/three/four'
cut -d/ -f4 <<<"$var"
【讨论】:
这是awk 版本:
awk -F\/ '{print $4}' <<< "$variable"
three
或
echo "$variable" | awk -F\/ '{print $4}'
three
PS 设置set 不需要的变量并删除= 周围的空格
variable='/one/two/three/four'
【讨论】: