Bash awk减少单个多个输入值的小数

Bash awk减少单个多个输入值的小数,bash,awk,Bash,Awk,我想转换以下内容 82.77, 69.30, 43.75, 33.44, 26.88, 26.83, 24.89, 24.88, 24.74, 23.07, 19.31 进入 我认为awk似乎是实现这一点的简单方法。以下内容适用于单个输入值 echo 123.45567 | awk '{printf("%.1f\n", $1)}' 如何使用带awk的空格分隔符对上述多个输入值执行此操作,或者是否有更好的方法执行此操作?昨天我试了一下,但没用 使用awk,您可以在所有字段中循环 awk '{f

我想转换以下内容

82.77, 69.30, 43.75, 33.44, 26.88, 26.83, 24.89, 24.88, 24.74, 23.07, 19.31
进入

我认为
awk
似乎是实现这一点的简单方法。以下内容适用于单个输入值

echo 123.45567 | awk '{printf("%.1f\n", $1)}'

如何使用带
awk
的空格分隔符对上述多个输入值执行此操作,或者是否有更好的方法执行此操作?昨天我试了一下,但没用

使用
awk
,您可以在所有字段中循环

awk '{for (i=1;i<=NF;i++) printf("%.1f, ",$i);print ""}' file
82.8, 69.3, 43.8, 33.4, 26.9, 26.8, 24.9, 24.9, 24.7, 23.1, 19.3, 17.5,

awk'{for(i=1;i使用
awk
,可以在所有字段中循环

awk '{for (i=1;i<=NF;i++) printf("%.1f, ",$i);print ""}' file
82.8, 69.3, 43.8, 33.4, 26.9, 26.8, 24.9, 24.9, 24.7, 23.1, 19.3, 17.5,
awk'{for(i=1;i
Q:如何使用带awk的空格分隔符对上述多个输入值执行此操作

A:尝试将RS记录分隔符设置为空格:

echo '82.77 69.30 43.75 33.44 26.88 26.83 24.89 24.88 24.74 23.07 19.31 17.51' \ 
| awk 'BEGIN{RS=" "} {printf("%.1f\n", $1)}' 
82.8
69.3
43.8
33.4
26.9
26.8
24.9
24.9
24.7
23.1
19.3
17.5
Q:如何使用带awk的空格分隔符对上述多个输入值执行此操作

A:尝试将RS记录分隔符设置为空格:

echo '82.77 69.30 43.75 33.44 26.88 26.83 24.89 24.88 24.74 23.07 19.31 17.51' \ 
| awk 'BEGIN{RS=" "} {printf("%.1f\n", $1)}' 
82.8
69.3
43.8
33.4
26.9
26.8
24.9
24.9
24.7
23.1
19.3
17.5
像这样使用它:

s='82.77, 69.30, 43.75, 33.44, 26.88, 26.83, 24.89, 24.88, 24.74, 23.07, 19.31, 17.51.'
awk '{printf("%.1f\n", $1)}' RS=, <<< "$s"
82.8
69.3
43.8
33.4
26.9
26.8
24.9
24.9
24.7
23.1
19.3
17.5
s='82.77,69.30,43.75,33.44,26.88,26.83,24.89,24.88,24.74,23.07,19.31,17.51'
awk'{printf(“%.1f\n”,$1)}'RS=,如下使用:

s='82.77, 69.30, 43.75, 33.44, 26.88, 26.83, 24.89, 24.88, 24.74, 23.07, 19.31, 17.51.'
awk '{printf("%.1f\n", $1)}' RS=, <<< "$s"
82.8
69.3
43.8
33.4
26.9
26.8
24.9
24.9
24.7
23.1
19.3
17.5
s='82.77,69.30,43.75,33.44,26.88,26.83,24.89,24.88,24.74,23.07,19.31,17.51'

awk'{printf(%.1f\n',$1)}'RS=,只需在每个字段上循环:

$ awk  -F', ' '{for(i=1;i<=NF;i++)printf "%.1f%s",$i,(i==NF?RS:FS)}'

$awk-F',''{for(i=1;i只需在每个字段上循环:

$ awk  -F', ' '{for(i=1;i<=NF;i++)printf "%.1f%s",$i,(i==NF?RS:FS)}'

“{code>82.77->82.8
但是
43.75->44.0
26.88->26.8
请解释为什么
82.77->82.8
但是
43.75->44.0
26.88->26.8