AWK知识小节
来源:互联网 发布:淘宝大v是什么意思 编辑:程序博客网 时间:2024/06/16 10:13
awk小节
1. awk的用法:
awk options “program” input_stream
更细点划分:awk options “pattern + Action”
awk将每个输入行识别成一条记录,而将那一行上的每个单词域识别成一个字段
********************************************
【.$1,$2…$N表示输入的第几个记录
$0表示输入的所有记录】
********************************************
2. Optons
-F fs制定一个分隔符
-f file制定读取的文件名
-v var=value定义一个变量,在gawk中有默认值
-mfN指定数据文件中处理的最大个数
-mrN指定数据文件中处理的最大size
-W keyword指定兼容模式或为gawk指定警告级别
3.Pattern
Regexp Patterns:使用正则表达式.
Expression Patterns:任何匹配的表达式
Ranges:指定匹配的范围
BEGIN/END:指定开始和结束规则
Empty:空记录,匹配任何记录
4.变量名 含义
ARGC命令行变元个数
ARGV 命令行变元数组,其中每一元素表示为ARGV[n],n为期望访问的命令行参数。
FILENAME 当前输入文件名
ENVIRON 支持系统设置的环境变量,例如ENVIRON[“EDITOR”] =“Vi”
FNR 当前文件中的记录号(可理解为行号),其变量值小于等于NR。
FS 输入域分隔符,默认为一个空格
RS 输入记录分隔符,缺省为新行(\n)
NF 当前记录里域个数(也可理解成当前的列数),在记录被读之后再设置
NR 到目前为止记录数(也就是当前的行数)
OFS 输出域分隔符,缺省为空格。如果想设置为#,写入O F S = " # "
ORS 输出记录分隔符,缺省为新行(\n)
gsub(r,s) 在整个$0中用s替代r,r为原内容,s为新内容,r可为/正则/
gsub(r,s,t) 在整个t中用s替代r, r为原内容,s为新内容,r可为/正则/
index(s,t) 返回s中字符串t的第一位置
length(s) 返回s长度
match(s,r) 测试s是否包含匹配r的字符串
split(s,a,fs)以fs为分隔符将s分成序列数组a
sprint(fmt,exp) 返回经fmt格式化后的exp
sub(r,s) 将$0第一个r替换为s,r可为/正则/
sub(r,s,t) 将域t中的第一个r替换为s,r可为/正则/
substr(s,p) 返回字符串s中从p开始的后缀部分
substr(s,p,n) 返回字符串s中从p开始长度为n的后缀部分
rand() 产生0到1之间的符点小数
Printf()
- 左对齐
width 域的步长,用0表示0步长
. prec 最大字符串长度,或小数点右边的位数
%c ASCII字符
%d 整数
%e 浮点数,科学记数法
%f 浮点数,例如(1 2 3 . 4 4)
%g awk决定使用哪种浮点数转换e或者f
%o 八进制数
%s 字符串
%x 十六进制数
5.例子:
1.)Pattern为表达式:
查找用户UID大于500的信息:
[root@station30 ~]# awk -F: '$3>500{print $0}' /etc/passwd
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologinvisitor:x:501:501::/home/visitor:/bin/bashzhuying:x:502:502::/home/zhuying:/bin/bashuser1:x:503:503::/home/user1:/bin/bashstu:x:504:504::/home/stu:/bin/bashNatasha:x:505:505::/home/Natasha:/bin/bashnatasha:x:2000:2000::/home/natasha:/bin/bashwendy:x:2001:2001::/home/wendy:/bin/bashcracker:x:2002:2002::/home/cracker:/sbin/nologin[root@station30 ~]#
查找root用户的信息:
[root@station30 ~]# awk -F: '$1=="root"{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@station30 ~]#
将第一字段都替换成root,相当于给变量赋值:(和上个例子进行比较)
[root@station30 ~]# awk -F: '$1="root"{print $0}' /etc/passwd
root x 0 0 root /root /bin/bashroot x 1 1 bin /bin /sbin/nologinroot x 2 2 daemon /sbin /sbin/nologinroot x 3 4 adm /var/adm /sbin/nologinroot x 4 7 lp /var/spool/lpd /sbin/nologinroot x 5 0 sync /sbin /bin/syncroot x 6 0 shutdown /sbin /sbin/shutdownroot x 7 0 halt /sbin /sbin/haltroot x 8 12 mail /var/spool/mail /sbin/nologinroot x 9 13 news /etc/newsroot x 10 14 uucp /var/spool/uucp /sbin/nologinroot x 11 0 operator /root /sbin/nologinroot x 12 100 games /usr/games /sbin/nologinroot x 13 30 gopher /var/gopher /sbin/nologinroot x 14 50 FTP User /var/ftp /sbin/nologinroot x 99 99 Nobody / /sbin/nologinroot x 69 69 virtual console memory owner /dev /sbin/nologinroot x 32 32 Portmapper RPC user / /sbin/nologinroot x 47 47 /var/spool/mqueue /sbin/nologinroot x 51 51 /var/spool/mqueue /sbin/nologinroot x 28 28 NSCD Daemon / /sbin/nologinroot x 16 16 Special user account to be used by OProfile /home/oprofile /sbin/nologinroot x 77 77 /var/arpwatch /sbin/nologinroot x 38 38 /etc/ntp /sbin/nologinroot x 81 81 System message bus / /sbin/nologinroot x 70 70 Avahi daemon / /sbin/nologinroot x 43 43 X Font Server /etc/X11/fs /sbin/nologinroot x 29 29 RPC Service User /var/lib/nfs /sbin/nologinroot x 65534 65534 Anonymous NFS User /var/lib/nfs /sbin/nologinroot x 74 74 Privilege-separated SSH /var/empty/sshd /sbin/nologinroot x 68 68 HAL daemon / /sbin/nologinroot x 42 42 /var/gdm /sbin/nologinroot x 100 103 avahi-autoipd /var/lib/avahi-autoipd /sbin/nologinroot x 500 500 /home/student /bin/bashroot x 501 501 /home/visitor /bin/bashroot x 502 502 /home/zhuying /bin/bashroot x 503 503 /home/user1 /bin/bashroot x 504 504 /home/stu /bin/bashroot x 505 505 /home/Natasha /bin/bashroot x 2000 2000 /home/natasha /bin/bashroot x 2001 2001 /home/wendy /bin/bashroot x 2002 2002 /home/cracker /sbin/nologin
直接找某个字符串的前一行号:
[root@Test230 zy]# awk '/zhengzhoudaxue/{print NR-1}' test.txt 512[root@Test230 zy]# grep zhengzhoudaxue test.txt -B2 -c2[root@Test230 zy]# grep zhengzhoudaxue test.txt -B2 -n4-eyrahrcfmrn5-ewhjrnj6:zhengzhoudaxue xixixix--11-test12-huhuhuh huhu test just a test~13:zhengzhoudaxue This is a test~
下面再来看一下mysqlbinlog的用法:
[root@mysql1 mysql]# mysqlbinlog --start-datetime="2012-04-17 01-00-00" --stop-datetime="2012-04-17 01-30-00" mysql-bin.000248 |grep -B 5 "user_dealer"|grep -B 5 "id=198492"
我们来看看NR和NF到底表示的是什么意思:
[root@master ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinnews:x:9:13:news:/etc/news:uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologingames:x:12:100:games:/usr/games:/sbin/nologingopher:x:13:30:gopher:/var/gopher:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologinnobody:x:99:99:Nobody:/:/sbin/nologinnscd:x:28:28:NSCD Daemon:/:/sbin/nologinvcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologinrpc:x:32:32:Portmapper RPC user:/:/sbin/nologinapache:x:48:48:Apache:/var/www:/sbin/nologinmailnull:x:47:47::/var/spool/mqueue:/sbin/nologinsmmsp:x:51:51::/var/spool/mqueue:/sbin/nologinoprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologinpcap:x:77:77::/var/arpwatch:/sbin/nologinntp:x:38:38::/etc/ntp:/sbin/nologindbus:x:81:81:System message bus:/:/sbin/nologinavahi:x:70:70:Avahi daemon:/:/sbin/nologinrpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologinnfsnobody:x:4294967294:4294967294:Anonymous NFS User:/var/lib/nfs:/sbin/nologinsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologinhaldaemon:x:68:68:HAL daemon:/:/sbin/nologinavahi-autoipd:x:100:156:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologinxfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologingdm:x:42:42::/var/gdm:/sbin/nologinsabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologinoracle:x:500:500::/home/oracle:/bin/bashpuppet:x:501:502::/home/puppet:/bin/bashmysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bashzhuying:x:502:503::/home/zhuying:/bin/bash[root@master ~]#
[root@master ~]# cat /etc/passwd | awk -F: '{print $NR}'
rootx24lp/sbin/sbin/shutdown
我们可以看出输出的是第一行的第一列,第二行的第二列。。。。实际是NR就是表示当前的行数,在第一行的时候相当于$1,第二行的时候相当于$2,以此类推!
上面只是为了帮助大家更好的理解NR,其实正确的用法是:
[root@master ~]# cat /etc/passwd | awk -F:'NR==1{print $0}'
root:x:0:0:root:/root:/bin/bash
[root@master ~]# cat /etc/passwd | awk -F: '{print $NF}'
/bin/bash/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/bin/sync/sbin/shutdown/sbin/halt/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/sbin/nologin/bin/bash/bin/bash/bin/bash/bin/bash
2.)Pattern为模糊匹配:
查找/etc/passwd中包含有Root或root的行
[root@station30 ~]# awk -F: '$1~/[Rr]oot/{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
查找/etc/passwd中不包含Root或root的行
[root@station30 ~]# awk -F: '$1!~/[Rr]oot/{print $0}' /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinadm:x:3:4:adm:/var/adm:/sbin/nologinlp:x:4:7:lp:/var/spool/lpd:/sbin/nologinsync:x:5:0:sync:/sbin:/bin/syncshutdown:x:6:0:shutdown:/sbin:/sbin/shutdownhalt:x:7:0:halt:/sbin:/sbin/haltmail:x:8:12:mail:/var/spool/mail:/sbin/nologinnews:x:9:13:news:/etc/news:uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologinoperator:x:11:0:operator:/root:/sbin/nologingames:x:12:100:games:/usr/games:/sbin/nologingopher:x:13:30:gopher:/var/gopher:/sbin/nologinftp:x:14:50:FTP User:/var/ftp:/sbin/nologinnobody:x:99:99:Nobody:/:/sbin/nologinvcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologinrpc:x:32:32:Portmapper RPC user:/:/sbin/nologinmailnull:x:47:47::/var/spool/mqueue:/sbin/nologinsmmsp:x:51:51::/var/spool/mqueue:/sbin/nologinnscd:x:28:28:NSCD Daemon:/:/sbin/nologinoprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologinpcap:x:77:77::/var/arpwatch:/sbin/nologinntp:x:38:38::/etc/ntp:/sbin/nologindbus:x:81:81:System message bus:/:/sbin/nologinavahi:x:70:70:Avahi daemon:/:/sbin/nologinxfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologinrpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologinnfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologinsshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologinhaldaemon:x:68:68:HAL daemon:/:/sbin/nologingdm:x:42:42::/var/gdm:/sbin/nologinavahi-autoipd:x:100:103:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologinstudent:x:500:500::/home/student:/bin/bashvisitor:x:501:501::/home/visitor:/bin/bashzhuying:x:502:502::/home/zhuying:/bin/bashuser1:x:503:503::/home/user1:/bin/bashstu:x:504:504::/home/stu:/bin/bashNatasha:x:505:505::/home/Natasha:/bin/bashnatasha:x:2000:2000::/home/natasha:/bin/bashwendy:x:2001:2001::/home/wendy:/bin/bashcracker:x:2002:2002::/home/cracker:/sbin/nologin[root@station30 ~]#
假如我们想要查看磁盘空间使用率,如果大于80%,就打印列表信息,这个时候我们就可以使用这个用法:
df -h|awk '{if ($5~/8.%/ || $5~/9.%/ || $5~/100%/) print}'
用点号代表一个字符~
3.)Pattern为Range:
查找用户从root到daemon的信息:
[root@station30 ~]# awk -F: '/^root:/,/^daemon:/{print $0}' /etc/passwd
root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologin[root@station30 ~]#
4.)Pattern为BEGIN或END:(此时若不输入文件,可进行算术运算)
BEGIN为预处理,仅执行一次
[root@station30 ~]# awk 'BEGIN{print 2*3}'
6
(rand()为随机函数:)
[root@station30 ~]# awk 'BEGIN{printrand()}'
0.237788
[root@station30 ~]#
默认等待用户输入内容:
[root@station30 ~]# awk 'END{print 3+4}'
this is a test
c
[root@station30 ~]#
按ctrl+D,执行结果:
[root@station30 ~]# awk 'END{print 3+4}'
7
[root@station30 ~]#
按ctrl+C结束:
[root@station30 ~]# awk 'END{print 3+4}'
[root@station30 ~]#
5.)分割符:
-F:作用是指定分割符为”:”(FS输入域分隔符,默认为一个空格),并显示用户名,用户信息,最后一行(即:shell)
[root@station30 ~]# awk -F: '{print $1,$5,$NF}' /etc/passwd
root root /bin/bashbin bin /sbin/nologindaemon daemon /sbin/nologinadm adm /sbin/nologinlp lp /sbin/nologinsync sync /bin/syncshutdown shutdown /sbin/shutdownhalt halt /sbin/haltmail mail /sbin/nologinnews newsuucp uucp /sbin/nologinoperator operator /sbin/nologingames games /sbin/nologingopher gopher /sbin/nologinftp FTP User /sbin/nologinnobody Nobody /sbin/nologinvcsa virtual console memory owner /sbin/nologinrpc Portmapper RPC user /sbin/nologinmailnull /sbin/nologinsmmsp /sbin/nologinnscd NSCD Daemon /sbin/nologinoprofile Special user account to be used by OProfile /sbin/nologinpcap /sbin/nologinntp /sbin/nologindbus System message bus /sbin/nologinavahi Avahi daemon /sbin/nologinxfs X Font Server /sbin/nologinrpcuser RPC Service User /sbin/nologinnfsnobody Anonymous NFS User /sbin/nologinsshd Privilege-separated SSH /sbin/nologinhaldaemon HAL daemon /sbin/nologingdm /sbin/nologinavahi-autoipd avahi-autoipd /sbin/nologinstudent /bin/bashvisitor /bin/bashzhuying /bin/bashuser1 /bin/bashstu /bin/bashNatasha /bin/bashnatasha /bin/bashwendy /bin/bashcracker /sbin/nologin[root@station30 ~]#
指定OFS输出域分隔符”(和上个例子进行比较)
[root@station30 ~]# awk -F: -v OFS=: '{print $1,$5,$NF}' /etc/passwd
root:root:/bin/bashbin:bin:/sbin/nologindaemon:daemon:/sbin/nologinadm:adm:/sbin/nologinlp:lp:/sbin/nologinsync:sync:/bin/syncshutdown:shutdown:/sbin/shutdownhalt:halt:/sbin/haltmail:mail:/sbin/nologinnews:news:uucp:uucp:/sbin/nologinoperator:operator:/sbin/nologingames:games:/sbin/nologingopher:gopher:/sbin/nologinftp:FTP User:/sbin/nologinnobody:Nobody:/sbin/nologinvcsa:virtual console memory owner:/sbin/nologinrpc:Portmapper RPC user:/sbin/nologinmailnull::/sbin/nologinsmmsp::/sbin/nologinnscd:NSCD Daemon:/sbin/nologinoprofile:Special user account to be used by OProfile:/sbin/nologinpcap::/sbin/nologinntp::/sbin/nologindbus:System message bus:/sbin/nologinavahi:Avahi daemon:/sbin/nologinxfs:X Font Server:/sbin/nologinrpcuser:RPC Service User:/sbin/nologinnfsnobody:Anonymous NFS User:/sbin/nologinsshd:Privilege-separated SSH:/sbin/nologinhaldaemon:HAL daemon:/sbin/nologingdm::/sbin/nologinavahi-autoipd:avahi-autoipd:/sbin/nologinstudent::/bin/bashvisitor::/bin/bashzhuying::/bin/bashuser1::/bin/bashstu::/bin/bashNatasha::/bin/bashnatasha::/bin/bashwendy::/bin/bashcracker::/sbin/nologin[root@station30 ~]#
ORS指定输出记录分隔符(即行分割符),此处两个换行符,即两行中间有个空白行
[root@station30 ~]# awk 'BEGIN{OFS=":";ORS="/n/n"};{print $1,$2}' /etc/passwd
root:x:0:0:root:/root:/bin/bash: bin:x:1:1:bin:/bin:/sbin/nologin: daemon:x:2:2:daemon:/sbin:/sbin/nologin: adm:x:3:4:adm:/var/adm:/sbin/nologin: lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin: sync:x:5:0:sync:/sbin:/bin/sync: shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown: halt:x:7:0:halt:/sbin:/sbin/halt: mail:x:8:12:mail:/var/spool/mail:/sbin/nologin: news:x:9:13:news:/etc/news:: uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin: operator:x:11:0:operator:/root:/sbin/nologin: games:x:12:100:games:/usr/games:/sbin/nologin: gopher:x:13:30:gopher:/var/gopher:/sbin/nologin: ftp:x:14:50:FTP:User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin: vcsa:x:69:69:virtual:console rpc:x:32:32:Portmapper:RPC mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin: smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin: nscd:x:28:28:NSCD:Daemon:/:/sbin/nologin oprofile:x:16:16:Special:user pcap:x:77:77::/var/arpwatch:/sbin/nologin: ntp:x:38:38::/etc/ntp:/sbin/nologin: dbus:x:81:81:System:message avahi:x:70:70:Avahi:daemon:/:/sbin/nologin xfs:x:43:43:X:Font rpcuser:x:29:29:RPC:Service nfsnobody:x:65534:65534:Anonymous:NFS sshd:x:74:74:Privilege-separated:SSH:/var/empty/sshd:/sbin/nologin haldaemon:x:68:68:HAL:daemon:/:/sbin/nologin gdm:x:42:42::/var/gdm:/sbin/nologin: avahi-autoipd:x:100:103:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin: student:x:500:500::/home/student:/bin/bash: visitor:x:501:501::/home/visitor:/bin/bash: zhuying:x:502:502::/home/zhuying:/bin/bash: user1:x:503:503::/home/user1:/bin/bash: stu:x:504:504::/home/stu:/bin/bash: Natasha:x:505:505::/home/Natasha:/bin/bash: natasha:x:2000:2000::/home/natasha:/bin/bash: wendy:x:2001:2001::/home/wendy:/bin/bash: cracker:x:2002:2002::/home/cracker:/sbin/nologin: [root@station30 ~]#
以BEGIN开头的,是在第一行前就指定输入,输出符
[root@station30 ~]# awk 'BEGIN{FS=":";OFS=":"} {print $1,$5,$NF}' /etc/passwd
root:root:/bin/bashbin:bin:/sbin/nologindaemon:daemon:/sbin/nologinadm:adm:/sbin/nologinlp:lp:/sbin/nologinsync:sync:/bin/syncshutdown:shutdown:/sbin/shutdownhalt:halt:/sbin/haltmail:mail:/sbin/nologinnews:news:uucp:uucp:/sbin/nologinoperator:operator:/sbin/nologingames:games:/sbin/nologingopher:gopher:/sbin/nologinftp:FTP User:/sbin/nologinnobody:Nobody:/sbin/nologinvcsa:virtual console memory owner:/sbin/nologinrpc:Portmapper RPC user:/sbin/nologinmailnull::/sbin/nologinsmmsp::/sbin/nologinnscd:NSCD Daemon:/sbin/nologinoprofile:Special user account to be used by OProfile:/sbin/nologinpcap::/sbin/nologinntp::/sbin/nologindbus:System message bus:/sbin/nologinavahi:Avahi daemon:/sbin/nologinxfs:X Font Server:/sbin/nologinrpcuser:RPC Service User:/sbin/nologinnfsnobody:Anonymous NFS User:/sbin/nologinsshd:Privilege-separated SSH:/sbin/nologinhaldaemon:HAL daemon:/sbin/nologingdm::/sbin/nologin avahi-autoipd:avahi-autoipd:/sbin/nologinstudent::/bin/bashvisitor::/bin/bashzhuying::/bin/bashuser1::/bin/bashstu::/bin/bashNatasha::/bin/bashnatasha::/bin/bashwendy::/bin/bashcracker::/sbin/nologin[root@station30 ~]#
以空白行分割~
6.)有多个action时,需要用”;”隔开:
[root@station30 ~]# awk -F: '{print "++++++++++++++++++++";print $1,$NF}' /etc/passwd
++++++++++++++++++++root /bin/bash++++++++++++++++++++bin /sbin/nologin++++++++++++++++++++daemon /sbin/nologin++++++++++++++++++++adm /sbin/nologin++++++++++++++++++++lp /sbin/nologin++++++++++++++++++++sync /bin/sync++++++++++++++++++++shutdown /sbin/shutdown++++++++++++++++++++halt /sbin/halt++++++++++++++++++++mail /sbin/nologin++++++++++++++++++++news++++++++++++++++++++uucp /sbin/nologin++++++++++++++++++++operator /sbin/nologin++++++++++++++++++++games /sbin/nologin++++++++++++++++++++gopher /sbin/nologin++++++++++++++++++++ftp /sbin/nologin++++++++++++++++++++nobody /sbin/nologin++++++++++++++++++++vcsa /sbin/nologin++++++++++++++++++++rpc /sbin/nologin++++++++++++++++++++mailnull /sbin/nologin++++++++++++++++++++smmsp /sbin/nologin++++++++++++++++++++nscd /sbin/nologin++++++++++++++++++++oprofile /sbin/nologin++++++++++++++++++++pcap /sbin/nologin++++++++++++++++++++ntp /sbin/nologin++++++++++++++++++++dbus /sbin/nologin++++++++++++++++++++avahi /sbin/nologin++++++++++++++++++++xfs /sbin/nologin++++++++++++++++++++rpcuser /sbin/nologin++++++++++++++++++++nfsnobody /sbin/nologin++++++++++++++++++++sshd /sbin/nologin++++++++++++++++++++haldaemon /sbin/nologin++++++++++++++++++++gdm /sbin/nologin++++++++++++++++++++avahi-autoipd /sbin/nologin++++++++++++++++++++student /bin/bash++++++++++++++++++++visitor /bin/bash++++++++++++++++++++zhuying /bin/bash++++++++++++++++++++user1 /bin/bash++++++++++++++++++++stu /bin/bash++++++++++++++++++++Natasha /bin/bash++++++++++++++++++++natasha /bin/bash++++++++++++++++++++wendy /bin/bash++++++++++++++++++++cracker /sbin/nologin[root@station30 ~]#
7.)打印变量的值
ARGC命令行变元个数(即变量个数)
ARGV 命令行变元数组(用数组表示变量)
[root@station30 ~]# awk 'BEGIN{ print ARGC,ARGV[1]}' /etc/fstab
2 /etc/fstab
[root@station30 ~]#
[root@station30 ~]# gawk 'BEGIN{ print ARGC,ARGV[2]}' /etc/fstab /etc/shadow
3 /etc/shadow
搜索以bin开头的行,取出第三个字段(即用户uid),用该值乘以6,再赋给变量test,并打印之。
[root@station30 ~]# awk -F: '/^bin/{test=$3*6;print test}' /etc/passwd
6
[root@station30 ~]#
打印用户名,并输出FNR=”行号”,(FNR为当前文件中的记录号)
[root@station30 ~]# awk 'BEGIN{FS=":"}{print $1,"FNR="FNR}' /etc/passwd
root FNR=1bin FNR=2daemon FNR=3adm FNR=4lp FNR=5sync FNR=6shutdown FNR=7halt FNR=8mail FNR=9news FNR=10uucp FNR=11operator FNR=12games FNR=13gopher FNR=14ftp FNR=15nobody FNR=16vcsa FNR=17rpc FNR=18mailnull FNR=19smmsp FNR=20nscd FNR=21oprofile FNR=22pcap FNR=23ntp FNR=24dbus FNR=25avahi FNR=26xfs FNR=27rpcuser FNR=28nfsnobody FNR=29sshd FNR=30haldaemon FNR=31gdm FNR=32avahi-autoipd FNR=33student FNR=34visitor FNR=35zhuying FNR=36user1 FNR=37stu FNR=38Natasha FNR=39natasha FNR=40wendy FNR=41cracker FNR=42[root@station30 ~]#
在awk中调用系统变量必须用单引号,如果是双引号,则表示字符串
8.)getline函数
通过getline函数取得date的值,并打印之
[root@station30 ~]# awk 'BEGIN{"date"|getline da;print da}'
Mon Feb 22 23:25:22 CST 2010
[root@station30 ~]#
结束等待输入数据:
[root@station30 ~]# awk 'BEGIN{"date"|getline da;print da,NR} END{print da}'
Mon Feb 22 23:32:22 CST 2010 0
CTRL+C,执行结果:
[root@station30 ~]# awk 'BEGIN{"date"|getline da;print da,NR} END{print da}'
Mon Feb 22 23:36:54 CST 2010 0
[root@station30 ~]#
CTRL+D,执行结果:
[root@station30 ~]# awk 'BEGIN{"date"|getline da;print da,NR} END{print da}'
Mon Feb 22 23:32:22 CST 2010 0
Mon Feb 22 23:32:22 CST 2010
[root@station30 ~]#
9.)循环语句if
我们知道执行df –lh时,有些内容会分行显示,可用if语句将分行显示的内容显示为一行
[root@station30 ~]# df -lh|awk '{if (NF<2) {ORS="";print $1} else {ORS="/n";print $0}}'
Filesystem Size Used Avail Use% Mounted on/dev/mapper/vol0-root 7.8G 6.8G 576M 93% //dev/mapper/vol0-home 465M 11M 431M 3% /home/dev/sda1 99M 29M 66M 31% /boottmpfs 506M 0 506M 0% /dev/shm/root/boot.iso 8.9M 8.9M 0 100% /root/iso1[root@station30 ~]#
若显示当前设备:
[root@station116 ~]#df -lh|awk '{if (NF<2){ORS="";print $1} else {ORS="/n";print $0}}' | awk '/^///{print $0}' >df
[root@station116 ~]# cat df/dev/mapper/vg01-root 2.0G 680M 1.3G 36% //dev/mapper/vg01-home 2.0G 34M 1.9G 2% /home/dev/mapper/vg01-tmp 1.9G 36M 1.8G 2% /tmp/dev/mapper/vg01-usr 9.7G 2.1G 7.2G 23% /usr/dev/sda1 114M 21M 88M 19% /boot/dev/md5 973M 18M 906M 2% /backup/dev/mapper/myvol-lvm1 194M 9.6M 175M 6% /share/dev/hdc 8.9M 8.9M 0 100% /media/CDROM
[root@station116 ~]#sed -i 's@/dev/mapper//([[:alnum:]]*/)-/([[:alnum:]]*/)@/dev//2//1@' df
[root@station116 ~]# cat df/dev/root/vg01 2.0G 680M 1.3G 36% //dev/home/vg01 2.0G 34M 1.9G 2% /home/dev/tmp/vg01 1.9G 36M 1.8G 2% /tmp/dev/usr/vg01 9.7G 2.1G 7.2G 23% /usr/dev/sda1 114M 21M 88M 19% /boot/dev/md5 973M 18M 906M 2% /backup/dev/lvm1/myvol 194M 9.6M 175M 6% /share/dev/hdc 8.9M 8.9M 0 100% /media/CDROM[root@station116 ~]#
10.)循环语句while
求SUM=1+2+3…100.
[root@station30 ~]# awk 'BEGIN{I=1;SUM=0;while (I<=100) {SUM+=I;I++};print SUM}'
5050
[root@station30 ~]#
11.)循环语句for
[root@station116 ~]#awk -F: '{for(I=1; I<=NF; I++) {if (I<NF){ORS=" "; print $I "/t"} else {ORS="/n"; print $I}}}' /etc/passwd
root x 0 0 root /root /bin/bashbin x 1 1 bin /bin /sbin/nologindaemon x 2 2 daemon /sbin /sbin/nologinadm x 3 4 adm /var/adm /sbin/nologinlp x 4 7 lp /var/spool/lpd /sbin/nologinsync x 5 0 sync /sbin /bin/syncshutdown x 6 0 shutdown /sbin /sbin/shutdownhalt x 7 0 halt /sbin /sbin/haltmail x 8 12 mail /var/spool/mail /sbin/nologinnews x 9 13 news /etc/news uucp x 10 14 uucp /var/spool/uucp /sbin/nologinoperator x 11 0 operator /root /sbin/nologingames x 12 100 games /usr/games /sbin/nologingopher x 13 30 gopher /var/gopher /sbin/nologinftp x 14 50 FTP User /var/ftp /sbin/nologinnobody x 99 99 Nobody / /sbin/nologinvcsa x 69 69 virtual console memory owner /dev /sbin/nologinrpc x 32 32 Portmapper RPC user / /sbin/nologinmailnull x 47 47 /var/spool/mqueue /sbin/nologinsmmsp x 51 51 /var/spool/mqueue /sbin/nologinnscd x 28 28 NSCD Daemon / /sbin/nologinoprofile x 16 16 Special user account to be used by OProfile /home/oprofile /sbin/nologinpcap x 77 77 /var/arpwatch /sbin/nologinntp x 38 38 /etc/ntp /sbin/nologindbus x 81 81 System message bus / /sbin/nologinavahi x 70 70 Avahi daemon / /sbin/nologinxfs x 43 43 X Font Server /etc/X11/fs /sbin/nologinrpcuser x 29 29 RPC Service User /var/lib/nfs /sbin/nologinnfsnobody x 65534 65534 Anonymous NFS User /var/lib/nfs /sbin/nologinsshd x 74 74 Privilege-separated SSH /var/empty/sshd /sbin/nologinhaldaemon x 68 68 HAL daemon / /sbin/nologingdm x 42 42 /var/gdm /sbin/nologinavahi-autoipd x 100 103 avahi-autoipd /var/lib/avahi-autoipd /sbin/nologinzhuying x 500 500 /home/zhuying /bin/bashnatasha x 2000 2000 /home/natasha /bin/bashwendy x 2001 2001 /home/wendy /bin/bashcracker x 2002 2002 /home/cracker /sbin/nologindovecot x 97 97 dovecot /usr/libexec/dovecot /sbin/nologin[root@station116 ~]#
12.)格式化输出
控制字符
c以ASCII字符显示
d以整数显示
i和d用法相同
e以科学计数法显示(默认小数位为6)
f以浮点数显示
g以科学计数或者浮点数显示,哪个更短用哪个显示
o以八进制形式显示
s以字符形式显示
x以十六进制形式显示
X以十六进制形式显示,但用从A到F的大写字母
***************************************************
【*】%后的控制字段:width(输入的最小宽度) .prce (精度) -(minus,表示左对齐)
***************************************************
多个字段,(注意:没有指定输出控制字符)
[root@station30 ~]# awk -F : '{printf "%-20s %20s /n",$1,$NF}' /etc/passwd
root /bin/bashbin /sbin/nologindaemon /sbin/nologinadm /sbin/nologinlp /sbin/nologinsync /bin/syncshutdown /sbin/shutdownhalt /sbin/haltmail /sbin/nologinnewsuucp /sbin/nologinoperator /sbin/nologingames /sbin/nologingopher /sbin/nologinftp /sbin/nologinnobody /sbin/nologinvcsa /sbin/nologinrpc /sbin/nologinmailnull /sbin/nologinsmmsp /sbin/nologinnscd /sbin/nologinoprofile /sbin/nologinpcap /sbin/nologinntp /sbin/nologindbus /sbin/nologinavahi /sbin/nologinxfs /sbin/nologinrpcuser /sbin/nologinnfsnobody /sbin/nologinsshd /sbin/nologinhaldaemon /sbin/nologingdm /sbin/nologinavahi-autoipd /sbin/nologinstudent /bin/bashvisitor /bin/bashzhuying /bin/bashuser1 /bin/bashstu /bin/bashNatasha /bin/bashnatasha /bin/bashwendy /bin/bashcracker /sbin/nologin[root@station30 ~]#
科学计数法
[root@station30 ~]#awk 'BEGIN{printf "%e/n",232.434345}'
2.324343e+02
[root@station30 ~]#
浮点数
[root@station30 ~]#awk 'BEGIN{printf "%8.2f",265.4363333}'
265.44[root@station30 ~]#
若在最后加入文件,则显示结果为:
[root@station30 ~]#awk 'BEGIN{"date"|getline da;print da,NR} END{print da}' /etc/fstab
Mon Feb 22 23:40:24 CST 2010 0
Mon Feb 22 23:40:24 CST 2010
[root@station30 ~]#
[root@station30 ~]#awk -F: 'BEGIN { max=100 ;print "max=" max} {max=($1 >max ?$1:max); print $1,"Now max is "max}' /etc/passwd
max=100root Now max is rootbin Now max is rootdaemon Now max is rootadm Now max is rootlp Now max is rootsync Now max is syncshutdown Now max is synchalt Now max is syncmail Now max is syncnews Now max is syncuucp Now max is uucpoperator Now max is uucpgames Now max is uucpgopher Now max is uucpftp Now max is uucpnobody Now max is uucpvcsa Now max is vcsarpc Now max is vcsamailnull Now max is vcsasmmsp Now max is vcsanscd Now max is vcsaoprofile Now max is vcsapcap Now max is vcsantp Now max is vcsadbus Now max is vcsaavahi Now max is vcsaxfs Now max is xfsrpcuser Now max is xfsnfsnobody Now max is xfssshd Now max is xfshaldaemon Now max is xfsgdm Now max is xfsavahi-autoipd Now max is xfsstudent Now max is xfsvisitor Now max is xfszhuying Now max is zhuyinguser1 Now max is zhuyingstu Now max is zhuyingNatasha Now max is zhuyingnatasha Now max is zhuyingwendy Now max is zhuyingcracker Now max is zhuying[root@station30 ~]#
(表达式1?表达式2:表达式3相当于:
if (表达式1)
表达式2
else
表达式3
13) 正则表达式
ifconfig eth0|awk -F "[ :]+" 'NR==2{print $4 "/" $NF}'中"[ :]+" 是什么意思?
[ :]+这个是正则表达式,+表示一个或多个,这里就表示一个或多个空格或冒号
[root@master ~]# ifconfig eth0eth0 Link encap:Ethernet HWaddr 00:50:56:AA:09:63 inet addr:192.168.55.229 Bcast:192.168.55.255 Mask:255.255.255.0 inet6 addr: fe80::250:56ff:feaa:963/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:12941576 errors:0 dropped:0 overruns:0 frame:0 TX packets:4634338 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:2163271655 (2.0 GiB) TX bytes:2054009869 (1.9 GiB)
[root@master ~]# ifconfig eth0|awk -F "[ :]+" 'NR==2{print $4 "/" $NF}'
192.168.55.229/255.255.255.0
[root@master ~]#
ps:
1。内建变量FS保存输入域分隔符的值,默认是空格或tab。我们可以通过-F命令行选项修改FS的值。如$ awk -F: '{print $1,$5}' test将打印以冒号为分隔符的第一,第五列的内容。
2。可以同时使用多个域分隔符,这时应该把分隔符写成放到方括号中,如$awk -F'[:\t]' '{print $1,$3}' test,表示以空格、冒号和tab作为分隔符。
下面我们来举个例子:
[root@master ~]# echo "inet addr:192.168.55.229 Bcast:192.168.55.255 Mask:255.255.255.0"|awk -F"[ : ]" '{print $3}'
192.168.55.229
[root@master ~]#
[root@master ~]# echo "inet addr:192.168.55.229 Bcast:192.168.55.255 Mask:255.255.255.0"|awk -F"[ : ]" '{print $2}'
addr
[root@master ~]#
14)-v的作用:定义变量
ls -l *log|awk -v PERMIT_LOG_SIZE=1610598912 '{if($5>=PERMIT_LOG_SIZE) print $9}'【正确】
ls -l *log|awk -v PERMIT_LOG_SIZE=1610598912 '{if($5>=$PERMIT_LOG_SIZE) print $9}'【错误】
注意一定不要加上那个$,加上之后就相当于没有判断了,你自己可以试试的~
另外需要说明的是这条命令的作用:所有以log结尾的日志中大于1.5G的~
例子:假如在一个循环中,我们输出结果时候,想带上ip,那么我们就可以用以下方法:
[oracle@sor-sys~]$ i=172.16.30.139
[oracle@sor-sys~]$uptime |cut -d, -f6|awk -v ip=$i '{if ($1+0>=0) print "========load!!" , ip ,$1 "==========="}'
========load!! 172.16.30.139 0.00===========
看看,输出结果了吧,O(∩_∩)O哈哈~
15)运算法
一个最简单的运算方法,判断这个字段是否大于某个值,同时可以避免带字母的字段输出【ASSIC见的转换~】
[oracle@sor-sys ~]$ echo xxx | awk '{if ($1>1)print $1}'
xxx
[oracle@sor-sys ~]$ echo xxx | awk '{if ($1+0>1)print $1}'
[oracle@sor-sys ~]$
清楚了吧?下面再来看几个例子~
(A).时间类的,带有冒号~
[oracle@sor-sys ~]$ cat top.txt|awk '{if ($6+0>1.8) print $0}'
11197 oracle 16 0 46 1005:39 8.9 2132m 1.4g 24m S java
15257 oracle 16 0 14 76:57.47 7.9 1579m 1.2g 22m S java
15927 oracle 16 0 4 46:57.91 9.1 2239m 1.4g 49m S java
3355 oracle 17 0 2 101:52.18 7.3 1384m 1.1g 17m S java
3356 oracle 16 0 0 216:13.44 7.6 2446m 1.2g 37m S java
5425 oracle 17 0 0 181:26.75 7.7 1489m 1.2g 18m S java
18499 oracle 16 0 0 11:07.68 11.0 2755m 1.7g 70m S java
[oracle@sor-sys ~]$ cat top.txt|awk '{if ($6>1.8) print $0}'
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
11197 oracle 16 0 46 1005:39 8.9 2132m 1.4g 24m S java
15257 oracle 16 0 14 76:57.47 7.9 1579m 1.2g 22m S java
15927 oracle 16 0 4 46:57.91 9.1 2239m 1.4g 49m S java
3355 oracle 17 0 2 101:52.18 7.3 1384m 1.1g 17m S java
3356 oracle 16 0 0 216:13.44 7.6 2446m 1.2g 37m S java
5425 oracle 17 0 0 181:26.75 7.7 1489m 1.2g 18m S java
18499 oracle 16 0 0 11:07.68 11.0 2755m 1.7g 70m S java
发现了木有,加不加0结果是不一样的哦,就像浅黄色的那一行输出,正是将字母转换成ASICC,进行输出的~
[oracle@sor-sys ~]$ cat top.txt |awk '{ if ($6+0>1.8)print "--------------------------------" $1,$2,$3,$5,int($6),$7,$11,$12"----------------------" }'
--------------------------------11197 oracle 16 461005 8.9 S java----------------------
--------------------------------15257 oracle 16 1476 7.9 S java----------------------
--------------------------------15927 oracle 16 446 9.1 S java----------------------
--------------------------------3355 oracle 17 2101 7.3 S java----------------------
--------------------------------3356 oracle 16 0216 7.6 S java----------------------
--------------------------------5425 oracle 17 0181 7.7 S java----------------------
--------------------------------18499 oracle 16 011 11.0 S java----------------------
[oracle@sor-sys ~]$ cat top.txt |awk '{ if ((int($6)>18))print "--------------------------------" $1,$2,$3,$5,int($6),$7,$11,$12"----------------------" }'
--------------------------------11197 oracle 16 461005 8.9 S java----------------------
--------------------------------15257 oracle 16 14 76 7.9 S java----------------------
--------------------------------15927 oracle 16 4 46 9.1 S java----------------------
--------------------------------3355 oracle 17 2 101 7.3 S java----------------------
--------------------------------3356 oracle 16 0 216 7.6 S java----------------------
--------------------------------5425 oracle 17 0 181 7.7 S java----------------------
(B).带有单位的数字
[oracle@sor-sys ~]$cat top.txt
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
11197 oracle 16 0 46 1005:39 8.9 2132m 1.4g 24m S java
15257 oracle 16 0 14 76:57.47 7.9 1579m 1.2g 22m S java
15927 oracle 16 0 4 46:57.91 9.1 2239m 1.4g 49m S java
3355 oracle 17 0 2 101:52.18 7.3 1384m 1.1g 17m S java
3356 oracle 16 0 0 216:13.44 7.6 2446m 1.2g 37m S java
5425 oracle 17 0 0 181:26.75 7.7 1489m 1.2g 18m S java
18499 oracle 16 0 0 11:07.68 11.0 2755m 1.7g 70m S java
[oracle@sor-sys ~]$ cat top.txt |grep 'g '|awk '{if ($8>2000) print "---------" $8 "--------"}'
---------2132m--------
---------2239m--------
---------2446m--------
---------2755m--------
[oracle@sor-sys ~]$ cat top.txt |grep 'g '|awk '{if ($8+0>2000) print "---------"int($8)"--------"}'
---------2132--------
---------2239--------
---------2446--------
---------2755--------
再举个最常用的例子,就是判断磁盘的使用率是否大于80%,大于就输出~
[oracle@sor-sys properties]$ df -hP|awk '{if ($5>80) print}'
Filesystem Size Used Avail Use% Mounted on
//192.168.63.150/online 246G 192G 41G 83% /tmp/t
[oracle@sor-sys properties]$ df -hP|awk '{if ($5+0>80) print}'
//192.168.63.150/online 246G 192G 41G 83% /tmp/t
(16)for循环
命令做统计的:
netstat -n | awk '/^tcp/ {++S[$NF]}END {for(a in S) print a,S[a]}'
[root@Test230 ~]# netstat -n|grep "^tcp"
tcp 0 0 127.0.0.1:6102 127.0.0.1:15913 ESTABLISHED
tcp 0 0 192.168.55.230:8890 192.168.55.230:50290 TIME_WAIT
tcp 0 0 192.168.55.230:8890 192.168.55.230:50291 TIME_WAIT
tcp 0 0 192.168.55.230:8890 192.168.55.230:50292 TIME_WAIT
tcp 0 0 127.0.0.1:15913 127.0.0.1:6102 ESTABLISHED
tcp 0 0 192.168.55.230:6202 192.168.55.229:6746 ESTABLISHED
tcp 0 0 192.168.55.230:44772 192.168.55.231:6202 ESTABLISHED
tcp 0 52 ::ffff:192.168.55.230:22 ::ffff:192.168.169.44:1215 ESTABLISHED
[root@Test230 ~]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
TIME_WAIT 3
ESTABLISHED 5
小节:
++state[$NF]
表示把某个数加一,如上所示:就是把state[TIME_WAIT]状态的连接数加一
(17)两个文件合并
1.txt58.82.0.0/15 58.82.0.0/1658.87.64.0/18 58.87.64.0/2458.99.128.0/17 58.99.128.0/2459.107.0.0/16 59.107.0.0/1759.108.0.0/15 59.108.0.0/1659.172.0.0/14 59.172.0.0/1559.191.0.0/16 59.191.0.0/17
2.txt58.82.0.0/16 ctc 58.87.64.0/24 cnc 58.99.128.0/24 ctc 59.107.0.0/17 cnc 59.108.0.0/16 ctc 59.172.0.0/15 ctc 59.191.0.0/17 ctc现在想实现的是如果1.txt 的第二个字段和2.txt的第一个字段相同的话,用1.txt的第一个字段替换2.txt的第一个字段。
得到的结果:
58.82.0.0/15 ctc
58.87.64.0/18 cnc
58.99.128.0/17 ctc
59.107.0.0/16 cnc
59.108.0.0/15 ctc
59.172.0.0/14 ctc
59.191.0.0/16 ctc
方法(一):
awk 'NR==FNR{a[$1]=$2}NR>FNR{print $1,a[$2]}' 2.txt 1.txt
awk 'NR==FNR{a[$2]=$1}NR>FNR{if (a[$1] != "") {print a[$1],$2} else {print $1,$2}}' 1.txt 2.txt 【这个是加了个判断~】
方法(二):
11
22
12
23
34
11
33
45
68
102
102
102
FileName=$1
declare -i sum=0
dir=`pwd`
for i in `cat ${dir}/$FileName `;do
sum=`expr $i + $sum`
done
echo $sum
54786542:13744232156 360565687:15026736523 360565687:13597572727 100000:13898754555 100000:13898754555 1510121:155554215544:TTTabaoping 207 1986 2009 1986 2007 baoping 2007 Malist dj121M112d12nmm tete
awk '/$/' list.txt 匹配包含$的行,即显示全文
awk '/./' list.txt 匹配包含^的行,即显示全文
awk '/.*/' list.txt 匹配包含任意字符的行,即显示全文
==》awk '{if($1=="baoping") {$2="1986";print $2}}' list.txt 重新赋值并显示单个$2
1008520650 天津 http://www.aibang.com/abc/a.jpg 0.0151008522118 天津 http://www.aibang.com/abc/a.jpg 0.0151008520646 天津 http://www.aibang.com/abc/a.jpg 0.0151999853994 沈阳 http://www.aibang.com/abc/a.jpg 0.0151008520650 天津 http://www.aibang.com/abc/a.jpg 0.0151008522118 天津 http://adad.ada.con/da 0.018 1008520646 天津 http://adadad/dad/dd.abc 0.016 1999853994 沈阳 http://www.sohu.com/abc/d.jif 1.14
57:03 05 19 21 27 31 04
58:03 06 15 20 25 26 04
59:04 13 21 22 26 31 01
60:07 10 13 16 17 29 01
61:03 08 11 12 14 18 14
62:02 13 16 17 20 31 07
63:02 10 17 19 24 27 12
64:5 10 11 16 23 24 11
65:8 10 18 19 27 31 14
66:1 2 9 26 29 33 12
67:4 5 10 21 26 30 16
3.33333 8 18.3333 21 26 29.3333 3 [oracle@sor-sys zy]$
[oracle@sor-sys zy]$
15.7143
14.1429
16.8571
13.2857
11.4286
15.1429
15.8571
14.2857
18.1429
16
16
[oracle@sor-sys zy]$
The total of above:110 The avage of above:15.7143
03 06 15 20 25 26 04
The total of above:99 The avage of above:14.1429
04 13 21 22 26 31 01
The total of above:118 The avage of above:16.8571
07 10 13 16 17 29 01
The total of above:93 The avage of above:13.2857
03 08 11 12 14 18 14
The total of above:80 The avage of above:11.4286
02 13 16 17 20 31 07
The total of above:106 The avage of above:15.1429
02 10 17 19 24 27 12
The total of above:111 The avage of above:15.8571
5 10 11 16 23 24 11
The total of above:100 The avage of above:14.2857
8 10 18 19 27 31 14
The total of above:127 The avage of above:18.1429
1 2 9 26 29 33 12
The total of above:112 The avage of above:16
4 5 10 21 26 30 16
The total of above:112 The avage of above:16
[oracle@sor-sys zy]$
2 3 4 5 6 [oracle@Test232 zy]$
[oracle@Test232 zy]$
2 3 4 5 6
[oracle@Test232 zy]$
- AWK知识小节
- **awk内置函数小节**
- 数据库知识小节
- Oracle知识小节
- 知识小节(java)
- 操作系统知识小节
- MFC知识小节
- 最近知识小节
- android偏门知识小节
- js函数知识小节
- 前端知识小节
- awk知识
- 第二阶段_第一小节_小知识
- awk入门语法知识
- awk小知识
- awk-基本语法知识
- 小节
- 小节
- Web应用防火墙实现技术优缺点
- 给个项目给你们发财我有销路要做来
- 房价只涨5%是不可接受的
- 2010软件初级培训练习3
- MERLOT -- 梅洛、梅鹿,美乐,墨尔乐
- AWK知识小节
- 增值税发票与普票有什么不一样
- 用js取css样式代码工具
- struts2注意事项
- test
- 红葡萄的皇后:Merlot 梅洛
- usaco_zerosum
- Mysql数据库数据的导入导出
- 最近在看动画片《轻音少女》