列出可以比较大小和给出状态的文件

时间:2015-12-15 09:47:32

标签: bash perl awk sed

我有SQL档案,但似乎其中一个比其他档案更小,是否有任何可能的方法来捕捉所有大小并比较所有大小,如果其中一些小于一定百分比ex:20%to给予不好的地位:

-rw-rw-r--    1 ort  users         35846 Dec 10 23:00 0000001016.dwhext.gz
-rw-rw-r--    1 ort  users         34869 Dec 11 23:00 0000000970.dwhext.gz
-rw-rw-r--    1 ort  users         35134 Dec 12 23:00 0000001031.dwhext.gz
-rw-rw-r--    1 ort  users          9741 Dec 13 23:00 0000000265.dwhext.gz
-rw-rw-r--    1 ort  users         32221 Dec 14 23:00 0000000911.dwhext.gz

预期输出为:

-rw-rw-r--    1 ort  users         35846 Dec 10 23:00 0000001016.dwhext.gz G
-rw-rw-r--    1 ort  users         34869 Dec 11 23:00 0000000970.dwhext.gz G
-rw-rw-r--    1 ort  users         35134 Dec 12 23:00 0000001031.dwhext.gz G
-rw-rw-r--    1 ort  users          9741 Dec 13 23:00 0000000265.dwhext.gz B
-rw-rw-r--    1 ort  users         32221 Dec 14 23:00 0000000911.dwhext.gz G

1 个答案:

答案 0 :(得分:0)

快速而肮脏的代码(平均值是一个简单的 sum / occurence

awk '{A[$9]=$5;E[$9]=$0;T+=$5;N++}END{m=T/N;for(a in A) printf "%s %s\n", E[a], sqrt(( 1-A[a]/m)^2)>0.2 ? "B" : "G"}' YourFileList.txt

abs()不存在,因此这里使用了sqrt(x^2)

保持相同的顺序,可以完成2次通过

awk 'FNR==NR {div++;tot+=$5;next} FNR==1{m=tot/div} {if(sqrt(($5/m-1)^2) > 0.2) print $0 " B";else print $0 " G"}' sa* sa*