shell两例
1.需求:求加权平均值。
简化下:文件中有两列,我要统计两列乘积 和所有乘积的和
echo "1 2
3 4
5 6" |awk 'BEGIN{i=1}{ a[i++]=$1*$2;sum+=$1*$2;}END{for(i in a ){print i,a[i]};print sum}'
写出如下方式, 说明就理解awk是按行处理了
echo "1 2
3 4
5 6" |awk '{ a[NR]=$1*$2;sum+=$1*$2;}END{for(i in a ){print i,a[i]};print sum}'
2.按照时间精确查找文件
方法一
ls -l /home/coresave/bak/|grep '`date +"%b %e %Y"`'|wc -l|awk '{t+=$1}END{print "rcv_core_num:"t}'
只能精确到月/日级别,虽然有%Y 但是ll中没有年份,因此该方法无法避免找到以前的同月份日期的文件。
方法二:
find /home/coresave/bak/ -type f -printf "%CY-%Cm-%Cd\n"|grep "`date +'%Y-%m-%d'`"|wc -l|awk '{t+=$1}END{print "rcv_core_num:"t}'
可以避免方法一导致的问题。