您的位置:首页 > 运维架构 > Shell

shell操作练习(编写shell脚本完成统计文件中的每个月份设备的出现次数)

2018-03-10 13:02 936 查看
对于shell的操作一直不太熟,最近在做一个比赛,恰好用到了shell来处理一些数据,下面总结下shell的一些基本用法,并练习编写shell脚本完成统计文件中的每个月份设备的出现次数
首先有5个数据文件要做处理



数据格式如图



先练习将5个数据文件中的第2列和第3,4列提取出来(这里提一下shell中的数字和字符串互相转换的过程,数字默认可以进行字符串操作,字符串转数字有以下几种方法例如:a="024"1,用${{a}}2,用let达到(()) 运算效果。let num=0123;
echo $num; 
833,双括号运算符:a=$((1+2));echo $a;等同于:a=`expr 1 + 2`而数字会默认做字符串处理变量用单引号''变字符串i=1echo '$i';
输出:$1



然后开始正式的操作#!/bin/bash

fileFront=data_2015_;
index=1;
fileBehind=.txt;
num1=0;
num2=0;
num3=0;
num4=0;
num5=0;
num6=0;
num7=0;
num8=0;
num9=0;
num10=0;
num11=0;
num12=0;
num13=0;
num14=0;
num15=0;
tempDate=$(sed "1p" -n data_2015_1.txt|awk '{print $3}');
tempflavorName=$(sed "${i}p" -n data_2015_1.txt|awk '{print $2}');
for((index=1;index<=5;index++))
do
fileName=${fileFront}${index}${fileBehind};
echo $fileName;
line=`cat $fileName|wc -l`;
echo $line;
for((i=1;i<$line;i++))
do
flavorName=$(sed "${i}p" -n $fileName|awk '{print $2}');
Date=$(sed "${i}p" -n $fileName|awk '{print $3}');
#time=$(sed "${i}p" -n $fileName|awk '{print $4}');
echo $flavorName;

if [ "$Date" == "$tempDate" ]; then
case $flavorName in
"flavor1")
num1=$(($num1+1))
;;
"flavor2")
num2=$(($num2+1))
;;
"flavor3")
num3=$(($num3+1))
;;
"flavor4")
num4=$(($num4+1))
;;
"flavor5")
num5=$(($num5+1))
;;
"flavor6")
num6=$(($num6+1))
;;
"flavor7")
num7=$(($num7+1))
;;
"flavor8")
num8=$(($num8+1))
;;
"flavor9")
num9=$(($num9+1))
;;
"flavor10")
num10=$(($num10+1))
;;
"flavor11")
num11=$(($num11+1))
echo $num2;
;;
"flavor12")
num12=$(($num12+1))
;;
"flavor13")
num13=$(($num13+1))
;;
"flavor14")
num14=$(($num14+1))
;;
"flavor15")
num15=$(($num15+1))
;;
esac
else
echo "$tempDate $num1 $num2 $num3 $num4 $num5 $num6 $num7 $num8 $num9 $num10 $num11 $num12 $num13 $num14 $num15" >> dataProFile;
tempDate=$Date;
i=$(($i-1));
echo $i;
num1=0;
num2=0;
num3=0;
num4=0;
num5=0;
num6=0;
num7=0;
num8=0;
num9=0;
num10=0;
num11=0;
num12=0;
num13=0;
num14=0;
num15=0;
fi

done

done
我们来看下效果



第一列是时间,第i列是第i个设备当前天数出现的次数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  shell awk sed
相关文章推荐