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个设备当前天数出现的次数。
首先有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脚本统计文件中出现次数最多的IP
- go语言之map练习(二):编写一个程序wordfreq程序,统计输入文本中每个单词出现的频率(次数)
- 利用shell脚本统计文件中出现次数最多的IP
- 【Shell】统计文件里面特定字符串出现次数
- 第十三周 项目五--字符串操作(1.3)统计每个字符出现次数
- HashMap练习统计字符串中每个字符出现的次数和HashMap嵌套HashMap
- Shell脚本基础6-if语句练习-文件测试操作
- Java笔记13:统计文件中每个字符出现的次数
- 编写一个脚本,统计log文件中首个单词出现的次数
- C++统计一个文件中每个数字字符(0~9)出现的次数
- 第13周-项目1-小玩文件-用键盘输入文件名,统计输出文件中每个字母、数字字符出现的次数
- 练习2-4:编一个程序统计文件中特定单词出现的次数(要求使用string类的运算符==来查找单词) .
- 将文件input.bin中的数据按字节(无符号数值)统计,输出每个数值在文件中出现的次数
- 通过C++中的正则表达式来统计文件中每个字符出现的次数
- 从文件读取包含数字和字母字符串,统计每个字符出现的次数,将次数输出到另外一个文件
- shell统计文件里面特定字符串出现次数
- Scheme 练习 - 统计字符串中每个字符出现的次数
- awk命令之 - 统计/etc/passwd文件中各用户所使用的shell类型及出现次数
- Java笔记13:统计文件中每个字符出现的次数
- java基础练习-统计字符串中每个字符出现的次数