you are better than you think

shell两例

· by thur · Read in about 1 min · (62 Words)
shell awk timestamp

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}'

可以避免方法一导致的问题。

Comments