awk脚本作业

1.只处理用户ID为奇数的行,并打印用户名和uid号

awk -F : '{if($3%2 == 1){print $1,$3}}' /etc/passwd

2.显示系统的普通用户,并打印用户名和ID

awk -F : '$1 != "root"{print $1,$3}' /etc/passwd

3.显示用户shell是’/bin/bash’的用户,并打印用户名

awk -F : '$7 == "/bin/bash"{print $1}' /etc/passwd

4.统计普通用户的个数

awk -F : '$1 != "root"' /etc/passwd |wc -l

5.统计文本的总行数

awk 'END{print NR}' /etc/passwd

6.显示文件名

ll |awk -F " " '/^-/{print $9}'

7.显示UID为501用户的相关信息

awk '$3 == 501{print $0}' /etc/passwd

8.利用awk模拟tail -1的效果

awk 'END{print $0}' /etc/passwd

9.看懂数组两个练习(统计tcp链接数)

netstat -ant|awk -F " " '/^tcp/{demo[$6] += 1}END{for(i in demo){print i,demo[i]}}'

10.将test2文件中的行追加到test1的同一行后,并保存到文件test3

test1 内容
haha
hehe
alice
bob
test2内容
20
25
18
30
test3 内容
haha:20
hehe:25
alice:18
bob:30
awk '{printf "%s: ",$1; getline < "test2" ; printf " %s\n",$1}' test1 > test3

11.某产品的CDN带宽运营成本迅猛增涨,其带宽主要由各种类型的图片组成,为了对某产品的图片流量带宽进行优化,现需要对该产品的图片和号码特性做一些分析,已有的日志文件test.log供分析使用,格式是

号码|请求大小|请求id,内容如下:
001|100|abc.gif
002|80|abd.jpg
003|150|abe.gif
001|60|abf.gif
003|30|abg.jpg

其中带有gif表示是gif图片的请求,带有jpg表示是jpg图片的请求,请使用(python/shell/awk/sort)编写程序实现如下分析思路(1,2为中间步骤,可以只输出3,4结果):
1.找出所有gif图片请求的所有号码
2.找出所有gif图片请求的号码和其对应的请求大小总和及请求数总和.
3.找出所有gif图片请求的号码,并按照其请求大小总和从大到小排序.
4.找出所有gif图片请求的号码,并按其请求平均图片大小从大到小排序.

3、awk 'BEGIN{FS=OFS="|"}/gif$/{arg[$1] += $2}END{for(i in arg){print i,arg[i]}}' test.log |sort -k2nr
4、awk 'BEGIN{FS=OFS="|"}/gif$/{print $0}' test.log |sort -t "|" -k2nr

你可能感兴趣的:(脚本)