显示存储在变量中的第一个和最后一个字符串条目
我有一个变量,MyVar其中存储了值。例如:
MyVar="123, 234, 345, 456"
变量中的每个条目都由逗号分隔,如上例所示。我希望能够挑选从这个变量的第一个和最后一个条目,即123和456分别。
知道如何从命令提示符终端实现这一目标吗?
谢谢!
回答
使用 bash 子字符串删除:
$ echo ${MyVar##*,}
456
$ echo ${MyVar%%,*}
123
还:
$ echo ${MyVar/,*,/,}
123, 456
更多例如这里:
https://tldp.org/LDP/abs/html/parameter-substitution.html
编辑:上面的那种期望子字符串只用逗号分隔。请参阅评论,其中@costaparas 光荣地展示了一个案例, 。
- Caveat with `${MyVar##*,}`: it will contain a leading space (concealed here since its passed unquoted to the `echo`). Could change to `${MyVar##*, }`.
回答
尝试使用sed:
MyVar="123, 234, 345, 456"
first=$(echo "$MyVar" | sed 's/,.*//')
last=$(echo "$MyVar" | sed 's/.*, //')
echo $first $last
解释:
- 为了获得第一个字符串,我们将 & 之后的所有内容(包括第一个逗号)替换为空(空字符串)。
- 为了获得最后一个字符串,我们用空字符串(空字符串)替换 & 之前的所有内容,包括最后一个逗号。