shell脚本之awk学习笔记
shell脚本学习笔记九——awk
#cat grade.txt
M.Tansley 05/99 48311 Green 8 40 44
J.Lulu 06/99 48317 green 9 24 26
P.Bunny 02/99 48 Yellow 12 35 28
J.Troll 07/99 4842 Brown-3 12 26 26
L.Tansley 05/99 4712 Brown-2 12 30 28
awk '{print $1,$4}' grade.txt
打印报告头
awk 'BEGIN {print "Name \t Belt\n--------------------"}{print $1"\t"$4}' grade.txt
打印信息尾
# awk 'BEGIN{print "Name \t \n------"}{print $1}END{print "--end of report--"}' grade.txt
Name
------
M.Tansley
J.Lulu
P.Bunny
J.Troll
L.Tansley
--end of report--
awk中正则表达式及其操作
1) 元字符 \ ^ $ . [] | () * + ?
2) 条件操作符 < <= == != >= ~ 匹配正则表达式 !~ 不匹配正则
表达式
匹配 使一域号匹配正则表达式,使用 ‘~’后紧跟正则表达式,也可以使用
if语句.awk中if后面的条件用()括起来
# awk '{if($4 ~/Brown/)print $0}' grade.txt
J.Troll 07/99 4842 Brown-3 12 26 26
L.Tansley 05/99 4712 Brown-2 12 30 28
# awk '$0 ~/Brown/' grade.txt
J.Troll 07/99 4842 Brown-3 12 26 26
L.Tansley 05/99 4712 Brown-2 12 30 28
精确匹配
# awk '{if($3=="48") print $0}' grade.txt 第三列有很多
48,所以要用精确匹配
P.Bunny 02/99 48 Yellow 12 35 28
# awk '$3==48' grade.txt awk默认动作是
print
P.Bunny 02/99 48 Yellow 12 35 28
awk '{ if ($6 < $7) print $1" Try better at..."}' grade.txt
M.Tansley Try better at...
J.Lulu Try better at...
设置大小写 [] 可匹配任意字符或单词
awk '{if($4 ~/[Gg]reen/) print $0}' grade.txt
M.Tansley 05/99 48311 Green 8 40 44
J.Lulu 06/99 48317 green 9 24 26
awk '/[Gg]reen/' grade.txt 结果同上
任意字符
[root@localhost awk_sed]# awk '$1 ~/^...a/' grade.txt
M.Tansley 05/99 48311 Green 8 40 44
L.Tansley 05/99 &
相关新闻>>
- 发表评论
-
- 最新评论 更多>>