很实用的Shell脚本(实践版)
- 格式:pdf
- 大小:100.16 KB
- 文档页数:21
/usr/WebSphere/IHS/logs/access_log>/usr/WebSphere/IHS/logs/error_logap">
Thizlinux 系统教程 Shell 经典实例----------------Milo经典小shell1 列目录树的shell脚本如下:#!/bin/sh# dtree: Usage: dtree [any directory]dir=${1:-.}(cd $dir; pwd)find $dir -type d -print | sort -f | sed -e "s,^$1,," -e "/^$/d" -e "s,[^/]*/([^/]*)$,`----1," -e "s,[^/]*/,| ,g"2 while中使用read (file是一个文件)cat file | while read linedoecho $lineecho " :: Please input any key(s):c"str4read=""while truedochr4read=`dd if=/dev/tty bs=1 count=1 2>/dev/null`str4read=$str4read$chr4readif [ "$chr4read" = "" ] ;then break; fidoneecho " :: |$str4read|"done3 将多个空格替换为字符sed 's/[ ][ ]*/ /g'如果空格与tab共存时用sed -e 's/[[:space:]][[:space:]]*/ /g' filename4用脚本实现分割文件#!/bin/bashif [ $# -ne 2 ]; thenecho 'Usage: split file size(in bytes)'exitfifile=$1size=$2if [ ! -f $file ]; thenecho "$file doesn't exist"exitfi#TODO: test if $size is a valid integerfilesize=`/bin/ls -l $file | awk '{print $5}'` echo filesize: $filesizelet pieces=$filesize/$sizelet remain=$filesize-$pieces*$sizeif [ $remain -gt 0 ]; thenlet pieces=$pieces+1fiecho pieces: $piecesi=0while [ $i -lt $pieces ];doecho split: $file.$i:dd if=$file of=$file.$i bs=$size count=1 skip=$i let i=$i+1doneecho "#!/bin/bash" > mergeecho "i=0" >> mergeecho "while [ $i -lt $pieces ];" >> mergeecho "do" >> mergeecho " echo merge: $file.$i" >> mergeecho " if [ ! -f $file.$i ]; then" >> mergeecho " echo merge: $file.$i missed" >> mergeecho " rm -f $file.merged" >> mergeecho " exit" >> mergeecho " fi" >> mergeecho " dd if=$file.$i of=$file.merged bs=$size count=1 seek=$i" >> merge echo " let i=$i+1" >> mergeecho "done" >> mergechmod u+x merge'5得到上月未日期,格式为YYYYMMDDget_lastday_of_lastmonth(){yy=`date +%Y`mm=`date +%m-1|bc`[ $mm -lt 1 ] && mm=12;yy=`expr $yy - 1`aaa=`cal $mm $yy`dd=`echo $aaa|awk '{print $NF}'`echo $yy$mm$dd}print $NF的$NF是打印最后一个列。
在Linux上使用Shell脚本实现网络配置在Linux操作系统中,Shell脚本是一种强大的工具,可以用于自动化操作和配置。
本文将介绍如何使用Shell脚本来实现网络配置。
一、准备工作要使用Shell脚本实现网络配置,首先需要了解一些基本的网络配置知识。
例如,IP地址、子网掩码、网关、DNS等。
在Linux系统中,这些信息可以通过ifconfig和route等命令来查看和配置。
二、创建Shell脚本首先,打开一个文本编辑器,例如vi或nano,创建一个空白文件。
然后,使用以下命令开头指示脚本使用Bash作为解释器:```bash#!/bin/bash```接下来,我们可以在脚本中添加一些注释,例如脚本的用途和作者等信息:```bash# 网络配置脚本# 作者:Your Name```三、获取用户输入接下来,我们可以使用read命令来获取用户输入的网络配置信息。
例如,用户需要输入IP地址、子网掩码、网关和DNS服务器的信息。
我们可以使用以下命令获取这些信息:```bashread -p "请输入IP地址:" ipread -p "请输入子网掩码:" subnetread -p "请输入网关地址:" gatewayread -p "请输入DNS服务器地址:" dns```四、配置网络有了用户输入的网络配置信息,我们可以使用ifconfig和route命令来配置网络。
以下是一个简单的例子,用于配置有线网络:```bashifconfig eth0 $ip netmask $subnetroute add default gw $gatewayecho "nameserver $dns" >> /etc/resolv.conf```上述命令将配置eth0网卡的IP地址和子网掩码,并添加默认的网关和DNS服务器。
实用技巧在Shell脚本中使用文件权限管理数据访问文件权限是Shell脚本中重要的数据访问管理工具。
熟练掌握文件权限的实用技巧可以提高脚本的安全性和效率。
本文将介绍在Shell脚本中使用文件权限管理数据访问的实用技巧。
一、文件权限基础文件权限是操作系统中对文件和目录进行权限控制的机制。
在Linux系统中,每个文件和目录都有三种基本权限:读(r)、写(w)和执行(x)。
这三种权限分别用数字表示为4、2和1,通过组合可以得到不同的权限掩码。
例如,用户可读可写但不可执行的权限表示为6(4+2),用户可读不可写不可执行的权限表示为4,用户不可读不可写但可执行的权限表示为1。
二、查看文件权限通过ls命令可以查看文件的权限信息。
具体命令格式为:```ls -l 文件名```其中,-l选项表示以长格式显示文件信息。
在权限信息的第一列,分别以r、w和x表示文件所有者、文件所属组和其他用户对文件的权限。
三、修改文件权限1. 使用chmod命令修改文件权限。
具体命令格式为:```chmod [who][+-=][权限] 文件名```其中,who表示欲修改权限的对象,可以是u(所有者)、g(所属组)和o(其他用户),也可以是a(所有用户)。
+-=表示增加、减少和设置权限。
权限表示为r、w或x的组合。
例如,将文件的所有者权限设置为可写可执行,可以执行如下命令:```chmod u+wx 文件名```2. 使用数字修改文件权限。
每个权限对应一个数值,通过组合可以得到权限掩码。
例如,读写权限对应的数值是6,只读权限对应的数值是4。
通过chmod命令也可以使用数值来设置权限。
例如,将文件的所有者权限设置为可读可写可执行,可以执行如下命令:```chmod 700 文件名```其中,700表示用户权限为7(读、写和执行),而所属组和其他用户的权限均为0(无权限)。
四、文件权限的实用技巧1. 判断文件是否存在并具有读写权限在脚本中,我们经常需要判断某个文件是否存在并具有读写权限,以决定是否继续执行下一步操作。
Linux运维常⽤shell脚本实例1、⽤shell脚本批量建⽴Linux⽤户实现要求:创建⽤户student1到student50,指定组为student组!⽽且每个⽤户需要设定⼀个不同的密码!脚本实现如下:#!/bin/bashfor i in `seq 1 50`douseradd -G student student$i ;echo student$i | passwd student$i --stdin;done【说明:Linux下 Passwd有参数 --stdin This option is used to indicate that passwd should read the new password from standard input, which can be a pipe. 所以linux下⾃动改变⽤户密码的办法就是: Echo 密码 |passwd –stdin ⽤户名】-------------------设置相同的密码------------------------#!/bin/bashpassword="123456"for USER in user1 user2 user3douseradd -m $USERecho -e "${password}\n${password}" | passwd $USERdone【说明:echo -n 不换⾏输出:$echo -n "123"$echo "456"最终输出 123456⽽不是123456echo -e 处理特殊字符:\n 换⾏且光标移⾄⾏⾸】ok,就这么⼀个简单的脚本,就可以再系统⾥批量⽣成账号了。
⽽且密码跟账号的名字⼀样。
这就是for do done语句⽤法。
2、编写shell脚本,将/usr/local/test⽬录下⼤于100k的⽂件转移到/tmp⽬录下:#!/bin/bashfor FILE in `ls /usr/local/test`doif [ -f $FILE ] ; thenif [ `ls -l $FILE | awk `{print $5}` -gt 100000 ] ; thenmv $FILE /tmp/fifidone================#!/bin/bashfor FileName in `ls -l /usr/local/test | awk '$5>102400' {print $9}`domv $FileName /tmp/donels -al /tmp/echo "done!"3、通过apache访问⽇志access.log 统计IP和每个地址访问的次数,按访问量列出前10名。
shell备份⽂件、重命名⽂件、删除指定⽂件的3个脚本分享因为经常会⽤到shell脚本,所以经常会写⼀些,但是我从来没有系统的学习过shell脚本,遇到问题,就去看⼿册,或者google⼀下,到了⼀定的程度才发现⾃⼰的基础真的好差。
下⾯在系统学习shell时,顺便写了点有⽤的⼩脚本。
1,备份⽬录下⾯⽂件复制代码代码如下:#!/bin/bashE_BADARGS=65case $# in //$#表⽰转⼊参数的个数,sh bak.sh ./ .sh 有⼆个参数./和.sh0) // 参数为空时,提⽰错误,并且退出echo "message:param is wrong"exit $E_BADARGS;;esacstring=" "cd $1 //进⼊传⼊的⽬录//备份⼦⽬录中的⽂件时,参数也要接上if [ $# -gt "1" ]thenstring=$string" "$2fifor filename in * //读取当前⽬录中的⽂件doif [ -d "$filename" ] //判断⼀下是不是⽬录then/bin/sh /home/zhangy/test/$0 $(pwd)/$filename $string //是⽬录的话,进⾏递归elseif [ $# -gt "1" ] && [ ${filename:(-${#2})} = $2 ] //指定备份什么样的⽂件thencp $filename $filename"bak"fiif [ $# -eq "1" ]thencp $filename $filename"bak" //没指定,备份⽬录下⾯的所有⽂件fifidoneexit 0[zhangy@BlackGhost test]$ sh bak.sh ./ .sh 这句话的意思是把当前⽬录(以及⼦⽬录)中的所有以.sh为后缀的⽂件,进⾏备份2,重命名⽂件复制代码代码如下:#!/bin/bashE_BADARGS=65case $# in0|1|2)echo "message:param is wrong"exit $E_BADARGS;;string=" "cd $1if [ $# -gt "2" ]thenstring=$string" "$2" "$3fifor filename in *doif [ -d "$filename" ]then/bin/sh /home/zhangy/test/$0 $(pwd)/$filename $stringelseif [ $# -gt "2" ] && [ ${filename:(-${#2})} = $2 ]thenmv $filename ${filename%$2}$3fifidoneexit 0[zhangy@BlackGhost test]$ sh rename.sh /home/zhangy/test .php .html 这句话的意思是说,把当前⽬录(包括⼦⽬录)下的所有以.php为后缀的⽂件,重命名为.html3,删除指定⽂件复制代码代码如下:#!/bin/bashE_BADARGS=65case $# in0|1)echo "message:param is wrong"exit $E_BADARGS;;esacstring=" "cd $1if [ $# -gt "1" ]thenstring=$string" "$2fifor filename in *doif [ -d "$filename" ]then/bin/sh /home/zhangy/test/$0 $(pwd)/$filename $stringelseif [ $# -gt "1" ] && [ ${filename:(-${#2})} = $2 ]thenrm -f $filenamefifidoneexit 0[zhangy@BlackGhost test]$ sh del.sh /home/zhangy/test .log 删除/home/zhangy/test,以及⼦⽬录下所有以.log为后缀的⽂件通过上⾯例⼦的练习,总结有以下⼏点1,传参数到shell脚本,⼀般传参数可以通过url或者是form表单,像这样index.php?name=tank,但是shell不能这样,他传参数直接根shell脚本的后⾯,像这样rename.sh /home/zhangy/test .php .html 向rename.sh传了3个参数,分别是/home/zhangy/test .php .html2,case语句,if语句的思想差不多,就是写法不⼀样,多看看,多练练就会适应了。
【学习】LinuxShell脚本实例之⼀1.程序流程控制实例程序流程控制,实际上就是改变程序的执⾏顺序。
程序在执⾏过程中若流程被改变,就可能导致输出不同,因此利⽤这⼀特性就能够实现程序执⾏结果的控制。
程序流程控制可分为“选择”和“循环”这两类,在需要根据实际需求的不同实现不同的输出时,就可以改变程序的执⾏流程。
(1)for循环语句基于for语句的循环,基于继续执⾏循环或者结束循环的⽅式。
在for执⾏命令前,其会先检查所要执⾏的列表中所指定的值是否还有未使⽤的,若有未使⽤的就赋值并执⾏列表,直到列表中的值全部都使⽤过后才退出循环。
如下是⼀个简单的 for 控制语句的脚本程序,其使⽤“星期”作为变量名,并从列表中读取值,直到读取完成后退出。
我们执⾏⼀下说明:第03 ⾏,所定义的变量名为week,其值为Monday~ Sunday。
第05⾏,使⽤echo回显变量week的值。
(2)while循环语句while循环语句结构是⼀种执⾏⼀系列命令的语句结构,它所执⾏的命令由测试条件所决定,这些条件定义语句是否继续执⾏。
在 while 循环语句中执⾏命令,若条件为真,则将过程执⾏⼀遍并回到开始处,接着再次进⾏条件的判断,若条件仍然是真,则接着再执⾏⼀遍,直到条件为假时才退出循环。
如下是⼀个数值运算的while循环脚本,其实现的是数值相加运算。
执⾏⼀下看⼀下结果说明:第03和04⾏,声明x和sum都为整型变量并赋予初始值。
第05⾏,条件测试。
第06~09⾏,这是⼀个循环体,当执⾏遇到done后,跳到第06⾏处继续执⾏,直到条件不满⾜时退出循环。
第10⾏,输出总数值。
(3)until循环语句与for和while循环体⼀样,until循环也执⾏⼀系列的命令,直到条件满⾜后退出循环。
until循环在循环体的顶部继续判断条件,直到条件为真时结束循环,否则⼀直执⾏。
以下脚本使⽤until语句来实现⼀个简单的、不断循环的输出预设值,直到⼈为⼲预时结束循环(按Ctrl+C组合键退出)。
如何在Shell脚本中操作数据库Shell脚本是一种在Unix、Linux和类Unix系统上运行的脚本编程语言,它非常适合用于自动化任务和处理大量数据。
在Shell脚本中操作数据库可以帮助我们实现与数据库的交互,进行数据的读取、修改、删除等操作。
本文将介绍如何在Shell脚本中操作数据库,以及一些常用的数据库操作命令。
一、连接数据库在Shell脚本中连接数据库通常需要使用到数据库管理系统提供的命令行工具,如MySQL提供的mysql命令。
下面是一个简单的连接数据库的示例:```shell#!/bin/bash# 连接数据库mysql -hlocalhost -uroot -p123456```在上述示例中,我们使用了mysql命令连接到本地的MySQL数据库,-h参数指定数据库服务器的地址,-u参数指定连接数据库的用户名,-p参数指定密码。
二、执行SQL语句连接数据库之后,我们可以通过执行SQL语句来进行各种数据库操作。
下面是一个执行SQL语句的示例:```shell#!/bin/bash# 连接数据库mysql -hlocalhost -uroot -p123456 <<EOF# 执行SQL语句USE database_name;SELECT * FROM table_name;EOF```在上述示例中,我们使用了EOF(End of File)来表示SQL语句的开始和结束位置。
通过使用<<EOF包裹SQL语句,我们可以在Shell 脚本中执行多行SQL语句。
三、读取数据库结果执行SQL语句之后,我们可能需要读取数据库返回的结果。
在Shell脚本中,我们可以通过处理命令输出来实现。
下面是一个读取数据库结果的示例:```shell#!/bin/bash# 连接数据库mysql -hlocalhost -uroot -p123456 <<EOF# 执行SQL语句USE database_name;SELECT * FROM table_name;EOF > result.txt# 读取数据库结果while read linedoecho $linedone < result.txt```在上述示例中,我们使用了EOF将SQL查询结果输出到result.txt 文件。
dolphinscheduler shell使用实例DolphinScheduler 是一个开源的、分布式的、易扩展的任务调度系统。
在DolphinScheduler 中,Shell 脚本是一种常见的任务类型,用于执行一系列的命令行操作。
下面是DolphinScheduler 中使用Shell 脚本的简单示例:1. 创建一个Shell 脚本:假设你有一个名为`myscript.sh` 的Shell 脚本,内容如下:```bash#!/bin/bashecho "Hello from DolphinScheduler Shell Task"date```2. 上传Shell 脚本到DolphinScheduler:在DolphinScheduler 的任务管理界面中,创建一个新的Shell 任务,然后上传`myscript.sh`。
3. 配置Shell 任务参数:在DolphinScheduler 中,配置Shell 任务的参数,例如设置脚本的路径和其他相关的执行参数。
4. 定义调度规则:配置任务的调度规则,例如任务何时运行、运行频率等。
5. 保存并启动任务:保存配置并启动任务,DolphinScheduler 将按照配置的规则执行你的Shell 脚本。
请注意,这只是一个简单的示例。
在实际应用中,你可能需要更复杂的脚本和更精细的任务调度设置。
此外,DolphinScheduler 还支持并发执行、任务依赖、任务日志查看等功能,以支持更复杂的任务管理需求。
具体的使用细节可能会因DolphinScheduler 的版本和配置而有所不同,建议查阅DolphinScheduler 的官方文档以获取更详细的信息。
五个简单的shell脚本 1、编写shell脚本 ex1.sh,提⽰⽤户输⼊⽤户名,并判断此⽤户名是否存在。(提⽰:利⽤read、grep和/etc/passwd) #!/bin/bashecho "请输⼊⽤户名"read username #相当于scanfif grep $username /etc/passwd; then #if的结尾要有fiecho "存在"else echo "不存在"fi
2、 编写shell脚本 ex2.sh,能将命令⾏参数相加并输出,如: ex2 1 3 8输出结果为12。(提⽰:利⽤$@和循环结构)#①可以把命令⾏的任意个数字相加#!/bin/bashsum=0 #赋初值for var in $@ #命令⾏的所有值 ⽤以循环do sum=$[$sum+$var] #$相当于地址符doneecho "$sum"
#②可以把命令⾏三个数相加#!/bin/bashCITY=SUM;let SUM=$1+$2+$3echo "$SUM"
3、 编写shell脚本 ex3.sh,能将命令⾏参数所代表的⽂件统计⾏数,相加并输出结果,如: ex3 file1 file2 file3 ,统计三个⽂件的⾏数的总数。
(提⽰:利⽤$@和循环结构)#!/bin/bashsum=0 nub=0for var in "$@" do nub=$(sed -n '$=' $var) #读取⽂件中数据的⾏数sum=$[$sum+$nub]doneecho "$sum"
4、 编写shell脚本 ex4.sh,将当前⽬录下的.c⽂件移到命令⾏参数指定的⽬录下,并按⽂件⼤⼩排序,显⽰移动后指定⽬录的内容。(提⽰:利⽤$1,sort和ls)#!/bin/bashecho "请输⼊地址:"read addr #scanf输⼊地址mv ./*.c $addr # ./表⽰当前⽬录 *.c表⽰所有⼀.c结尾的⽂件 mv移动操作ls -S $addr #ls 显⽰当前⽬录下的⽂件夹 -S将⽂件⼤⼩排序 5、 编写shell脚本 ex5.sh,输出命令⾏参数中的最⼤数,如: ex2 1 3 8输出结果为8;如果命令⾏参数中有⾮数字参数则报错。(提⽰:利⽤$@、循环结构和分⽀判断)#!/bin/bashmax=$1for var in "$@"do if [[ $var != *[!0-9]* ]];then #*X*匹配任何包含x的字符串(开头,中间或结尾),[!0-9]匹配任何⾮0-9的字符,合起来就是匹配没有0-9的字符if [ $var -gt $max ];then #⽐较var和max的⼤⼩ -gt表⽰">"max=$varfielseecho "含有其他字符"exit #结束fidone
ApacheLogRotate.shecho`date`":Cleantheapachelogs">/usr/WebSphere/IHS/logs/access_log>/usr/WebSphere/IHS/logs/error_log
apforwinbk.shexportDayOfWeek=`date+"%u"`cd/wasbackupcp-rf./WASBackup_"$DayOfWeek".tar./apbk
archiveOld.shexportTargetDir=/erpHome/jln.ear/erp.war/$1/$2exportTT=`date+"%Y%m%d"`exportDayOfWeek=`date+"%u"`if(test-e$TargetDir)thenmkdir-p/erpHome/shell/old/$1cd$TargetDir#zip-qm/erpHome/old/$1/$2_$TT.zip`find.-mtime+7|awk'{print$0}'`mv/erpHome/shell/old/$1/$2_$DayOfWeek.zip/erpHome/shell/old/$1/$2.zip.oldfind.-mtime+7|xargsnice-n20zip-qm/erpHome/shell/old/$1/$2_$DayOfWeek.zip#find.-mtime+7FiarchiveOld2.sh./erpHome/shell/setP.shexportDayOfWeek=`date+"%u"`iftest"$#"-lt1||test-z"$1"thenechoAtleastoneargumentneeded.exitfiiftest!-e"$ShellHome/old/$1"thencd$ShellHome/old/mkdir-p$1fiiftest!-e"$ERPHome/$1"thenecho"$ERPHome/$1""doesnotexist"exitficd$ERPHome/$1mv$ShellHome/old/$1_$DayOfWeek.zip$ShellHome/old/$1.zip.oldfind.-mtime+7-typef|xargsnice-n20zip-qm$ShellHome/old/$1_$DayOfWeek.zip#find.-mtime+7-typefarchiveOldAll.sh/erpHome/shell/archiveOld.shwork/dr/enginejrprint/erpHome/shell/archiveOld.shwork/detmp/erpHome/shell/archiveOld2.shpublic
backupLog.shecho`date`":Backupthelogs"./erpHome/shell/setP.shcd$ERPHome/waslogsmkdirold/mvstd*_*.txtold/mv$LOGHome/LOG_$DD.zip$LOGHome/LOG.zip.oldzip-qmr$LOGHome/LOG_$DD.zip`ls$ERPHome/waslogs|grep-Ev"std|FATAL_DEBUG.xml"`ls-l$LOGHome/LOG_$DD.zipecho`date`":Backupthelogsdone."
backupWASAll.sh./erpHome/shell/setP.shcd/erpHome#renameoldbackupfileecho"####"`date`"ERPprogrambackup####"#mv/wasbackup/WASBackup_"$DayOfWeek".tar/wasbackup/WASBackup_old.tarrm-Rf/wasbackup/erpbak/WASBackup_"$DayOfWeek".tar#backupERPprogramnice-n20tar-cf/wasbackup/erpbak/WASBackup_"$DayOfWeek".tarjln.ear/erp.warDIClientDIServerThreadPoolerpdatals-l/wasbackup/erpbak/WASBackup_"$DayOfWeek".tar
collectAudit.sh./erpHome/shell/setP.shjlnauditshutdownauditpr-v$LOGHome/AUDIT_$YYMMDD.txtmv/audit/trail$LOGHome/trail_$TTgzip$LOGHome/trail_$TTauditstartlast|grep"$TT2">$LOGHome/LOGIN_$YYMMDD.txtgrep"$TT3"/var/adm/sulog>$LOGHome/SU_$YYMMDD.txt
cplogs.shexportdd=`perl-e'@y=localtime(time()-86400);printf"%02d\n",$y[3];'`cd/erpHome/shell/logsmkdir/test/erplogscp./LOG_"$dd".zip/test/erplogscpnmon.shcd/worktmp/nmonexportdd=`perl-e'@y=localtime(time()-86400);printf"%02d\n",$y[3];'`exportd=`date+%y%m`"$dd"exportHOSTNAME=`hostname`exportdata="$HOSTNAME"_"$d"_"*"ftp-n ddd.shcd$1touch11.txt filter.awkBEGIN{DiscardURLs="/erp/de/deCommand/erp/jsp/"DiscardAmount=split(DiscardURLs,DiscardURL,"")ResponseThreshold=4.9999nlines=0totalCount=0}functionextractTime(myDate,aSize){if(aSize==2)returnmyDate[2]if(myDate[2]=="上午")returnmyDate[3]split(myDate[3],dates,":")returndates[1]+12":"dates[2]":"dates[3]}functionisSkip(myURL){for(i=1;i<=DiscardAmount;i++)if(index(myURL,DiscardURL[i])>0)return1return0}{if(isSkip($3)==0){if(NF==10){totalCount++;if($4>ResponseThreshold){mySize=split($2,myDate,"")myTime=extractTime(myDate,mySize)print$1"\t"myTime"\t"$3"\t"$4"\t"$5"\t"$6nlines++}}}}END{print"本日网页执行总次数:"totalCount"(JSP,servlet,但不包含图片等静态网页,也不包含/erp/jsp/开头的这些监控画面)"print"共"nlines"笔异常资料" formatHTML.awkBEGIN{}functiongetSysName(myURL){fCount=split(myURL,myArray,"/")returnmyArray[3]}functiongetMaxInArray(oArray,oResult,oIndex){maxValue=0for(idxinoCount){if(oCount[idx]>maxValue){maxValue=oCount[idx]maxSys=idx}}deleteoArray[maxSys]oResult[oIndex,1]=maxSysoResult[oIndex,2]=maxValue}functionsort(array,result,thresHold){for(i=1;i<=5;i++){getMaxInArray(array,result,i)}}{oSys=getSysName($3)if(NF!=6){print$0""}else{oCount[oSys]++oRecord++;print""$1""$2""$3""$4""$5""$6""}}END{oThresholdoRecord/10sort(oCount,oResult,oThreshold)print""print"