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
?