需要用到的知识,gawk和sort,uniq。
awk中的变量求和例子如下:
cat *.dat | awk -v sum=0 '{sum+=$5} END {print $sum}'
在awk 中 | /都是元字符,要这么用
awk -F "[|]+" '{print $2}' a.txt
用uniq命令可以删除相邻的重复行:
uniq [file]
另外uniq命令有4个有用的选项:
$uniq -d file 只输出file中的重复行,且只输出一次,但不输出唯一的行
$uniq -u file 只输出file中的唯一行(当然是一次啦)
$uniq -c file 在每行前显示重复次数,可与其他选项结合,例如-cu或-cd或-c
$uniq -i file 比较时忽略大小写
#!/bin/bash
#function: 统计一个月份各个营业厅售票总额
cat XSML200907* > xsml0907
cat XSML200908* > xsml0908
sort xsml0907 > xsml0907so
sort xsml0908 > xsml0908so
gawk -F "[|]" '{print $1}' xsml0907so > 0907
gawk -F "[|]" '{print $1}' xsml0908so > 0908
uniq -cd 0907 > tmp0907
uniq -cd 0908 > tmp0908
rm -f xsml0907 xsml0908 xsml0907so xsml0908so 0907 0908