1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<code>1.脚本:</code>
<code>[root@oldboy ~]</code><code># cat test</code>
<code>wang 4</code>
<code>cui 3</code>
<code>zhao 4</code>
<code>liu 3</code>
<code>chang 5</code>
<code>li 2</code>
<code>[root@oldboy ~]</code><code># </code>
<code>问题</code>
<code> </code><code>1 通过第一个域找出字符长度为4的 知识点:(length函数)</code>
<code>[root@oldboy ~]</code><code># awk '{if(length($1)=="4"){print $0}}' test</code>
<code>[root@oldboy ~]</code><code># awk '{len=length($1);if(len=="4"){print $0}}' test</code>
<code>2. 将文档中 liu 字符串替换为 hong 知识点 gsub(</code><code>/r/</code><code>,</code><code>"s"</code><code>,域)</code>
<code>[root@oldboy ~]</code><code># awk '{gsub(/liu/,"hong",$1);print $0}' test</code>
<code>hong 3</code>
<code>3.第二列求和 </code>
<code>[root@oldboy ~]</code><code># awk 'BEGIN{sum=0}{sum=sum+$2}END{print sum}' test</code>
<code>24</code>
<code>[root@oldboy ~]</code><code># echo "4+3+4+6+7"|bc</code>
<code>4.第二列求平均值 双变量 或者运用内置变量NR</code>
<code>[root@oldboy ~]</code><code># awk 'BEGIN{sum=0;i=0}{sum=sum+$2;i++}END{print sum/i}' test </code>
<code>3.42857</code>
<code>[root@oldboy ~]</code><code># awk 'BEGIN{sum=0}{sum=sum+$2}END{print sum/NR}' test </code>
<code>[root@oldboy ~]</code><code>#</code>
<code>5.第二列求最大值 和最初的一个值进行比较</code>
<code>[root@oldboy ~]</code><code># awk 'BEGIN{a=0}{if($2>a){a=$2}}END{print a}' test</code>
<code>5</code>
<code>6. 去重统计</code>
<code>[root@oldboy ~]</code><code># awk '{arry[$1]++}END{for(i in arry){print arry[i],i}}' test|sort -nr </code>
<code>2 liu</code>
<code>1 zhao</code>
<code>1 wang</code>
<code>1 li</code>
<code>1 cui</code>
<code>1 chang</code>
<code>脚本:</code>
<code>[root@oldboy ~]</code><code># cat test02</code>
<code>zhangsan 80</code>
<code>lisi 81.5</code>
<code>wangwu 93</code>
<code>zhangsan 85</code>
<code>lisi 88</code>
<code>wangwu 97</code>
<code>zhangsan 90</code>
<code>lisi 92</code>
<code>wangwu 88</code>
<code>7.(求每人的平均值)</code>
<code>反思a数组主要用于 第一列的唯一表示 累加</code>
<code> </code><code>b 数组用于统计每个第一列的个数</code>
<code>key 就是数组内的值 </code>
<code>a[key] 就是key 多对应的第几列的值</code>
<code>[root@oldboy ~]</code><code># awk '{a[$1]+=$2;b[$1]++}END{for(key in a){print key,a[key]/b[key]}}' test02 </code>
<code>zhangsan 85</code>
<code>lisi 87.1667</code>
<code>wangwu 92.6667</code>
<code>[root@oldboy ~]</code><code># awk '{a[$1]+=$2;b[$1]++}END{for(key in a){print key,a[key]}}' test02 </code>
<code>zhangsan 255</code>
<code>lisi 261.5</code>
<code>wangwu 278</code>
<code>[root@oldboy ~]</code><code># awk '{a[$1]+=$2;b[$1]++}END{for(key in a){print b[key]}}' test02 </code>
<code>3</code>
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<code>8.</code><code>awk</code> <code>增加表标题和行(主要用来统计)</code>
<code>[root@oldboy ~]</code><code># awk 'BEGIN{FS=":";print "name\tshell"}{print $1"\t"$7}END{print "blue,/bin/bash"}' /etc/passwd </code>
<code>name shell</code>
<code>root </code><code>/bin/bash</code>
<code>bin </code><code>/sbin/nologin</code>
<code>daemon </code><code>/sbin/nologin</code>
<code>adm </code><code>/sbin/nologin</code>
<code>lp </code><code>/sbin/nologin</code>
<code>sync</code> <code>/bin/sync</code>
<code>shutdown</code> <code>/sbin/shutdown</code>
<code>halt </code><code>/sbin/halt</code>
<code>9.搜索哪一个关键字</code>
<code>[root@oldboy ~]</code><code># awk 'BEGIN{FS=":"}/root/' /etc/passwd</code>
<code>root:x:0:0:root:</code><code>/root</code><code>:</code><code>/bin/bash</code>
<code>operator:x:11:0:operator:</code><code>/root</code><code>:</code><code>/sbin/nologin</code>
<code>10.搜索以什么开头的行</code>
<code>[root@oldboy ~]</code><code># awk '/^root/' /etc/passwd</code>
<code>11.搜索以多个开头的行</code>
<code>[root@oldboy ~]</code><code># awk '/^(sshd|root)/' /etc/passwd</code>
<code>sshd:x:74:74:Privilege-separated SSH:</code><code>/var/empty/sshd</code><code>:</code><code>/sbin/nologin</code>
<code>12.搜索以字母开头的行</code>
<code>[root@oldboy ~]</code><code># awk '/^[rd]/' /etc/passwd</code>
<code>daemon:x:2:2:daemon:</code><code>/sbin</code><code>:</code><code>/sbin/nologin</code>
<code>dbus:x:81:81:System message bus:/:</code><code>/sbin/nologin</code>
<code>13.条件判断</code>
<code>[root@oldboy ~]</code><code># awk 'BEGIN{FS=":"}{if($2=="x"&&$3<=10){print $0}}' /etc/passwd </code>
<code>bin:x:1:1:bin:</code><code>/bin</code><code>:</code><code>/sbin/nologin</code>
<code>adm:x:3:4:adm:</code><code>/var/adm</code><code>:</code><code>/sbin/nologin</code>
<code>lp:x:4:7:lp:</code><code>/var/spool/lpd</code><code>:</code><code>/sbin/nologin</code>
<code>sync</code><code>:x:5:0:</code><code>sync</code><code>:</code><code>/sbin</code><code>:</code><code>/bin/sync</code>
<code>shutdown</code><code>:x:6:0:</code><code>shutdown</code><code>:</code><code>/sbin</code><code>:</code><code>/sbin/shutdown</code>
<code>halt:x:7:0:halt:</code><code>/sbin</code><code>:</code><code>/sbin/halt</code>
<code>mail:x:8:12:mail:</code><code>/var/spool/mail</code><code>:</code><code>/sbin/nologin</code>
<code>uucp:x:10:14:uucp:</code><code>/var/spool/uucp</code><code>:</code><code>/sbin/nologin</code>
<code>14.统计一个文件的行数</code>
<code>[root@oldboy ~]</code><code># awk 'BEGIN{sum=0}{sum++}END{print sum}' /etc/passwd </code>
<code>15.统计一个文件夹下的字节数</code>
<code>[root@oldboy ~]</code><code># ls -l |awk 'BEGIN{size=0}{size+=$5}END{print size}' </code>
<code>29479</code>
<code>16.length</code>
<code>[root@oldboy ~]</code><code># awk 'BEGIN{FS=":"}{len=length($5);if(len>4){print $0}}' /etc/passwd</code>
<code>games:x:12:100:games:</code><code>/usr/games</code><code>:</code><code>/sbin/nologin</code>
<code>gopher:x:13:30:gopher:</code><code>/var/gopher</code><code>:</code><code>/sbin/nologin</code>
<code>ftp</code><code>:x:14:50:FTP User:</code><code>/var/ftp</code><code>:</code><code>/sbin/nologin</code>
<code>nobody:x:99:99:Nobody:/:</code><code>/sbin/nologin</code>
<code>vcsa:x:69:69:virtual console memory owner:</code><code>/dev</code><code>:</code><code>/sbin/nologin</code>
<code>haldaemon:x:68:68:HAL daemon:/:</code><code>/sbin/nologin</code>
<code>saslauth:x:499:76:Saslauthd user:</code><code>/var/empty/saslauth</code><code>:</code><code>/sbin/nologin</code>
<code>17.查看系统的端口号:</code>
<code>[root@oldboy ~]</code><code># awk -F "[ /]+" '$1~/^(ftp|ssh|https|mysql|ssh)$/{print $1,$2}' /etc/services |uniq </code>
<code>ftp</code> <code>21</code>
<code>ssh</code> <code>22</code>
<code>https 443</code>
<code>mysql 3306</code>
<code>18.求1-100之间的和</code>
<code>[root@oldboy ~]</code><code># seq 100|awk '{sum+=$1}END{print sum}' </code>
<code> </code><code>5050</code>
<code>19.求PATH路径中命令为三个字母的个数</code>
<code>[root@oldboy ~]</code><code># find `echo $PATH|tr ":" " "` -type f -name "???"|awk -F "/" '{i++;print $4}END{print "总的个数为:" i}'>>command.txt</code>
<code>20.统计日志的IP的个数,并统计每个ip的个数</code>
<code>[root@oldboy ~]</code><code># awk -F "[ ]+" '{arry[$1]++}END{for(key in arry){print arry[key],key}}' access_awk.log |sort -nr|head -n 10</code>
<code>179 112.64.171.98</code>
<code>114 49.70.160.35</code>
<code>108 180.157.41.101</code>
<code>98 124.79.108.144</code>
<code>97 58.220.223.62</code>
<code>90 61.170.130.208</code>
<code>73 116.25.32.13</code>
<code>72 218.79.64.76</code>
<code>62 115.228.107.174</code>
<code>61 180.154.238.125</code>
<code>21.统计单词和字母的个数</code>
<code>用shell处理以下内容</code>
<code>1、按单词出现频率降序排序!</code>
<code>2、按字母出现频率降序排序!</code>
<code>源数据:</code>
<code>the squid project provides a number of resources to assist </code><code>users</code> <code>design,implement and support squid installations. Please browse the documentation and support sections </code><code>for</code> <code>more</code> <code>infomation</code>
<code>[root@oldboy ~]</code><code># egrep -o "[a-Z]+" work |awk '{a[$1]++}END{for(key in a){print key,a[key]}}' |sort -nrk2</code>
<code>the 2</code>
<code>support 2</code>
<code>squid 2</code>
<code>and 2</code>
<code>users</code> <code>1</code>
<code>to 1</code>
<code>sections 1</code>
<code>resources 1</code>
<code>[root@oldboy ~]</code><code># egrep -o "[a-Z]" work |awk '{a[$1]++}END{for(key in a){print key,a[key]}}' |sort -nrk2</code>
<code>s 19</code>
<code>e 17</code>
<code>o 16</code>
<code>t 14</code>
<code>n 12</code>
<code>i 12</code>
<code>r 11</code>
<code>a 9</code>
本文转自 小小三郎1 51CTO博客,原文链接:http://blog.51cto.com/wsxxsl/1832197,如需转载请自行联系原作者