【发布时间】:2015-10-27 06:17:56
【问题描述】:
我需要检查两个文件是否为空。如果是,则将“-999”写入文件,否则对文件中的数字进行平均。
这是我一直在尝试使用的编码:
代码:
if [[ ! -z file1 ]] || [[ ! -z file2 ]]
then
echo "-999" > file_avg
else
cat file1 >> tmp
cat file2 tmp > file_all
cat file_all | awk 'BEGIN {c = 0; sum = 0;} $1 ~ /^[0-9]*(\.[0-9]*)?$/
{a[c++] = $1; sum += $1;} END {avg = sum / c; if( (c % 2) == 1 ) {median = a[ int(c/2) ];}
else {median = ( a[c/2] + a[c/2-1] ) / 2;} OFS="\t"; print avg;}' file_all
> file_avg
fi
file_all 的内容:
76
76
78
79
75
76
77
78
76
【问题讨论】:
标签: linux unix if-statement echo average