Python全系列 教程
3567个小节阅读:5929.8k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
awk概述:
awk -F [':'] '{pattern + action}' filename
支持自定义分隔符
支持正则表达式匹配
支持自定义变量,数组 a[1] a[tom] map(key)
支持内置变量
支持函数
支持流程控制语句,类C语言
xxxxxxxxxx
#搜索/etc/passwd有root关键字的所有行
awk '/root/ { print $0}' passwd
#统计/etc/passwd文件中,每行的行号,每行的列数,对应的完整行内容
awk -F ':' '{print NR "-" NF "-" $0}' passwd
#只是显示/etc/passwd的账户(第一列):
awk -F':' '{print $1}' passwd
#只是显示/etc/passwd的账户和账户对应的shell,而账户与shell之间以逗号分割,
awk -F':' '{print $1 "," $7}' passwd
#制表符拼接字段
awk -F':' ' { print $1"\t" $7} ' passwd
在所有行开始前添加列名name,shell,在最后一行添加"shell,end"
xxxxxxxxxx
# 逗号版
awk -F ":" '
BEGIN{
print "name,shell"
}
{
print $1","$7
}
END{
print "shell,end"
}
' passwd
# 制表符版
awk -F ':' '
BEGIN{
print "name \t shell"
}
{
print $1 "\t" $7
}
END{
print "shell \t end"
}
' passwd
• 案例报表统计:合计每人1月总消费,0:manager,1:worker
Tom 0 2021-10-11 car 3000
John 1 2021-01-13 bike 1000
vivi 1 2021-01-18 car 2800
Tom 0 2021-01-20 car 2500
John 1 2021-01-28 bike 3500
split函数演示:
xxxxxxxxxx
awk '{
split($3,date,"-")
}
END{
for(i in date){
print i"\t"date[i]
}
}
' emp.txt
角色处理:
xxxxxxxxxx
if $2 ==0
map_name_role[$1] = “manager”
else
map_name_role[$1] = “worker”
整合:
xxxxxxxxxx
awk '{
split($3, date, "-")
if (date[2] == "01") {
map_name_sala[$1]+=$5
if($2=="0"){
map_name_role[$1]="Manager"
}else{
map_name_role[$1]="Worker"
}
}
}
END{
for(name in map_name_sala){
print name"\t"map_name_sala[name]"\t"map_name_role[name]
}
}' awk.txt