分割由数字-点-数字-空间模式组成的长字符串,在 bash 中分隔点左侧和右侧的数字

分割由数字-点-数字-空间模式组成的长字符串,在 bash 中分隔点左侧和右侧的数字

我正在读取 csv 文件

dm=`awk -F "\"*,\"*" '{print $1}' file.csv`

我保留第一列,它看起来像:

25.3
26.3
27.3

对于几行。

我想要一个由以下组成的变量

25 26 27

和一个由

3 3 3

我是 bash 的新手,但我正在努力如何做到这一点...我想出的最接近 split 的方法是

echo $dm | tr "." " "

这根本不够......

谢谢,AB

答案1

您可以将输出保存在数组中dm并使用参数扩展从数组值中删除后缀和前缀模式。

dm=( $(awk -F "\"*,\"*" '{print $1}' file.csv) )
var1=${dm[@]%.*} # remove suffix `.*` -> "25 26 27"
var2=${dm[@]#*.} # remove prefix `*.` -> "3 3 3"

相关内容