假设有一个数据文件data.txt
,其内容如下:
176.05 174.66 169.81 143.48 188.23 186.74 135.95 181.69 162.19 96.84 205.55
输出类似于:
min: 96.84
max: 205.55
任何简单的脚本都可以这样做吗?
答案 0 :(得分:2)
如果你有GNU awk:
awk '{a[NR]=$1}END{asort(a);print "min: ",a[1],"\nmax: "a[NR]}' RS=' ' file
min: 96.84
max: 205.55
如果你不这样做:
awk '{x=$1>x?$1:x;m=$1<m?$1:m}END{print "min: ",m,"\nmax: ",x}' RS=' ' m=inf x=-m file
min: 96.84
max: 205.55
答案 1 :(得分:0)
直接的awk解决方案
awk 'NR==1{max=min=$1;}{for(i=1;i<=NF;i++){max=max<$i?$i:max;min=min>$i?$i:min;}}END{print "max:",max,"\nmin:",min;}' data.txt
答案 2 :(得分:0)
这是一个AWK脚本。我删除了空格以在一行上放置更多空格,如果需要,可以将其分开。
awk '{min=$1;max=$1;for(i=2;i<=NF;i++){if($i>max)max=$i;if($i<min)min=$i}print "min:",min,", max:",max}' data.txt
答案 3 :(得分:0)
正如您现在所知,awk
对于这项工作来说是一个很好的工具。这是一个变化的变化
记录分隔符将每个数字视为输入中的单独记录:
awk '{max=($1>max)?$1:max;
min=($1<min)?$1:min;
}
END{printf "min: %s\nmax: %s\n",min,max}' \
RS=" " min=inf max=-inf file.txt