Shell三剑客:awk(awk编辑编程)一
2023-12-24 22:37:24
一、awk脚本定义格式
格式1:
BEGIN{} pattern{} END{}
格式2:
#!/bin/awk -f
#add 'x' right
BEGIN{} pattern{} END{}
- BEGIN{ 这里面放的是执行前的语句 }
- END {这里面放的是处理完所有的行后要执行的语句 }
- {这里面放的是处理每一行时要执行的语句}
- 格式1假设为f1.awk文件,格式2假设为f2.awk文件?
awk [-v var=value] f1.awk [file]
f2.awk [-v var=value] [var1=value1] [file]
- awk [-v var=value] f1.awk [file],把处理阶段放到一个文件而已,展开后就是普通的awk语句。
- f2.awk [-v var=value] [var1=value1] [file] 中 [-v var=value] 是在BEGIN之前设置的变 量值,[var1=value1]是在BEGIN过程之后进行的,也就是说直到首行输入完成后,这个变量才可用。?
二、脚本示例
? ? ? ? 示例1
[root@localhost ~]# vim f2.awk
#!/bin/awk -f
{if($3>=1000)print $1,$3}
[root@localhost ~]# awk -F: -f f2.awk /etc/passwd
tom 1000
jack 1001
Tom 1002
Jack 1004
opp 1008
abc 1009
qian 1010
yoa 1011
huang 1012
kai 1013
kong 1014
cai 1015
duo 1016
gou 1017
ji 1018
liangl 1019
han 1020
?
?
? ? ? ? 示例2
[root@localhost ~]# vim score.txt #1、创建一个文件(学生成绩表)
Marry 2143 78 84 77
Jack 2321 66 78 45
Tom 2122 48 77 71
Mike 2537 87 97 95
Bob 2415 40 57 62
[root@localhost ~]# vim cal.awk #2、定义 awk 脚本
#!/bin/awk -f
#运行前
BEGIN {
math =0
english =0
computer =0
printf "NAME NO. MATH ENFLISH COMPUTER TOTAL\n"
printf "----------------------------------------------\n"
}
#运行中
{
math+=$3
english+=$4
computer+=$5
printf "%-6s %-6s %4d %8d %8d %8d\n",$1,$2,$3,$4,$5,$3+$4+$5
}
#运行后
END {
printf "----------------------------------------------\n"
printf" TOTAL:%10d %8d %8d \n", math,english,computer
printf"AVERAGE:%10.2f %8.2f %8.2f\n", math/NR, english/NR, computer/NR
}
[root@localhost ~]# awk -f cal.awk score.txt #执行脚本
NAME NO. MATH ENFLISH COMPUTER TOTAL
-----------------------------------------------
Marry 2143 78 84 77 239
Jack 2321 66 78 45 189
Tom 2122 48 77 71 196
Mike 2537 87 97 95 279
Bob 2415 40 57 62 159
-----------------------------------------------
TOTAL: 319 393 350
AVERAGE: 63.80 78.60 70.00
?
?
?
?
?
?
文章来源:https://blog.csdn.net/weixin_73783595/article/details/135187483
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!