Shell_Linux_Shell脚本库_日志处理中写的一些脚本
2016-07-31 22:48
459 查看
最近博主被分配了一项紧急任务,事情有些紧急,花了两天的时间学习Shell,并完成了一项任务.自认为还算不错,
接下来分享下处理这个任务中所编写的一些脚本,就算留作纪念吧
用到的技术点
0.常用的 Linux命令 cat / grep / sed / cd / wc
1.shell 流程控制
2.shell 条件判断
3.shell 变量
5.shell 数组
6.正则匹配
将两个文件下的指定文件合并放置到一个新的文件夹下面
重命名符合条件的文件(批处理)
利用sed与正则替换符合条件的串
利用grep -v 检查日志文件是否有不满足规则的行
========一些不太常用到的脚本=================
==============================================
从日志文件中随机选取几条记录写入到另一个文件中
版本一
版本二
随机删除日志文件中的数据(批处理方式)
awk修改cid,对原有的cid进行随机+n操作
接下来分享下处理这个任务中所编写的一些脚本,就算留作纪念吧
用到的技术点
0.常用的 Linux命令 cat / grep / sed / cd / wc
1.shell 流程控制
2.shell 条件判断
3.shell 变量
5.shell 数组
6.正则匹配
将两个文件下的指定文件合并放置到一个新的文件夹下面
#!/bin/sh date=0 dir1="/data/logs/d19_201606/06/selectedlogs/82/baselogs/newlogs_tmp/newlogs/" dir2="/data/logs/d19_201606/80_advanced/" outdir="" for((i=1;i<=24;i++));do if((i<10));then date="0$i" else date="$i" fi #echo $date cat ${dir1}stm-collect.cn.miaozhen.com_201607${date}_82_new.log ${dir2}201607${date}.log >> /data/logs/sm_new/82_new/201607${date}_82.log done
重命名符合条件的文件(批处理)
#!/bin/sh in=20160701 while(($in<20160725)) do filename="stm-collect.cn.miaozhen.com_""$in"".log" outname="stm-collect.cn.miaozhen.com_""$in""_.log" mv $outname $filename let "in++" done
利用sed与正则替换符合条件的串
#!/bin/sh logFile="copy_05_06.log" date="02" sed -i "s/[0-9]\{2\}\/\(May\|Jun\|Jul\)/$date\/Jul/g" $logFile grep -v "$date/Jul" $logFile #检验有没有删除干净
利用grep -v 检查日志文件是否有不满足规则的行
#!/bin/sh dir="/data/logs/d19_201606/06/ selectedlogs/82/baselogs/newlogs/" date_count=25 sitelist=(82) echo ${sitelist[0]} cd "${dir}" #进入制定路径 date="00" for((i=1; i<25; i++));do if((i<10));then date="0$i" else date="$i" fi echo $date grep -v "${date}/Jul" *201607${date}_82_new.log >> error.log done
========一些不太常用到的脚本=================
==============================================
从日志文件中随机选取几条记录写入到另一个文件中
版本一
#!/bin/sh date="04" file="copy_05_06.log" outfile="Jul_""$date.log" declare lines=0; #日志文件中剩余的日志条数 function totalLines(){ result="`wc -l $file`" #如果想从命令中获取数据的话,也可以用 $() arr=($result) #将结果转换为数组 lines=${arr[0]} #获取第0个参数,行号 #echo $lines #打印总的行数 } sum=$(($RANDOM%8+8)) #sum记录了随机选取的条数 echo "lines has been selected Num:$sum" echo "before delete: $(wc -l $file)" for((i=0;i<$sum;i++));do #echo $i totalLines; #echo ${lines} randomline=$(($RANDOM%$lines)) sed -n "${randomline}p" "$file" >> $outfile #随机取一条数据追加到outfile sed -i "${randomline}d" "$file" #删除被取出取的那一行 #echo $randomline done echo "after delete: $(wc -l $file)" echo "selected lines: $(wc -l $outfile)"
版本二
1、合并 cat file1 file2 > file3 2、去重 sort file3 | uniq >> file4 3、随机抽取 shuf -n12 file4 > file5 查行数wc -l 4、去掉a中包含b的部分 cat b.txt a.txt | sort| uniq -u > file
随机删除日志文件中的数据(批处理方式)
#! /bin/bash rate=$((RANDOM%7+85)) indir="/mnt/hgfs/Share_Windows_Linux/" outdir="/mnt/hgfs/Share_Windows_Linux/" indate=(18 17 16 18 28 17 16 30 27 19) outdate=(01 02 03 04 05 06 07 08 09 10) cd "$indir" num=0 for((i=0;i<10;i++));do cat stm-collect.cn.miaozhen.com_201606${indate[i]}_selected.log | while read LINE do num=$(($RANDOM%100)) #echo ${num} if((${num} <= ${rate}));then #echo ${num} echo $LINE >> ${outdir}stm-collect.cn.miaozhen.com_201607${outdate[i]}_new.log fi done done
awk修改cid,对原有的cid进行随机+n操作
#!/bin/bash sour="data.txt" out="data_new.txt" ct=$(wc -l $sour | awk '{print $1}') echo "source file lines : $ct" lines=$(( ($RANDOM%10+90)*ct/100 )) echo "should be change lines : $lines" awk -v num=$lines -F'&' ' BEGIN{ srand(); } { if(NR<=num) { split($2,a,"="); ct=int(rand()*100%9); a[2]=a[2]+ct; gsub(/cid=[0-9]*/,"cid="a[2],$0); #$2=a[1]"="a[2]; } print $0; } ' $sour > $out old=$(wc -l $sour | awk '{print $1}') new=$(wc -l $out | awk '{print $1}') echo "old file has $old lines" echo "new file has $new lines"
相关文章推荐
- Linux编写shell脚本处理Catalina.out长时间大量日志占用系统空间问题
- linux执行shell脚本的方式及一些区别
- shell脚本兼容linux/unix与windows/cygwin的基础(注意处理好CR, LF, CR/LF 回车 换行的问题)
- linux执行shell脚本的方式及一些区别
- linux实战(二)----shell脚本监控实例-----日志截取三个命令在性能监控等运用中的实例解析
- linux执行shell脚本的方式及一些区别
- Linux简单处理CC攻击shell脚本
- 通过shell脚本定期删除linux用户下的日志
- 日志处理中一些shell命令技巧
- 转:linux执行shell脚本的方式及一些区别
- Linux学习-shell脚本编程基础之处理用户输入
- Linux简单处理CC攻击shell脚本
- linux执行shell脚本的方式及一些区别
- Linux and Unix Shell -- 一些简单的Shell脚本
- linux+shell+脚本+过滤NetScreen防火墙日志
- 日志处理中一些shell命令技巧
- 采用SHELL脚本对日志压缩备份处理
- 使用RMAN和控制文件备份删除归档日志的SHELL脚本--RED HAT 5 LINUX 64
- Linux下一些常用的Shell脚本整理
- 使用RMAN和控制文件备份删除归档日志的SHELL脚本--RED HAT 5 LINUX 64