显示存储在变量中的第一个和最后一个字符串条目

我有一个变量,MyVar其中存储了值。例如:

MyVar="123, 234, 345, 456"

变量中的每个条目都由逗号分隔,如上例所示。我希望能够挑选从这个变量的第一个和最后一个条目,即123456分别。

知道如何从命令提示符终端实现这一目标吗?

谢谢!

回答

使用 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

解释:

  • 为了获得第一个字符串,我们将 & 之后的所有内容(包括第一个逗号)替换为空(空字符串)。
  • 为了获得最后一个字符串,我们用空字符串(空字符串)替换 & 之前的所有内容,包括最后一个逗号。

以上是显示存储在变量中的第一个和最后一个字符串条目的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>