awk 实例练习(一)
2016-04-30 18:43
309 查看
前一篇学习了awk的基本知识,现在来做一些练习加深一下印象。
假设我们有这样一个待处理的文件"grade.txt":
[align=left]M.Tansley 05/99 48311 Green 8 40 44[/align]
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
[align=left] [/align]
[align=left]#打印整个文件[/align]
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
[align=left]$ awk '{print $0}' grade.txt[/align]
[align=left]M.Tansley 05/99 48311 Green 8 40 44[/align]
[align=left]J.Lulu 06/99 48317 green 9 24 26[/align]
[align=left]P.Bunny 02/99 48 Yellow 12 35 28[/align]
[align=left]J.Troll 07/99 4842 Brown-3 12 26 26[/align]
[align=left]L.Tansley 05/99 4712 Brown-2 12 30 28[/align]
[align=left]#打印第一和第四个域[/align]
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'{print $1,$4}' grade.txt
[align=left]M.Tansley Green[/align]
[align=left]J.Lulu green[/align]
[align=left]P.Bunny Yellow[/align]
[align=left]J.Troll Brown-3[/align]
[align=left]L.Tansley Brown-2[/align]
[align=left] [/align]
[align=left]#打印表头[/align]
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'BEGIN {print "Name Belt\n---------------------------"}
[align=left]> {print $1"\t"$4}' grade.txt[/align]
[align=left]Name Belt[/align]
[align=left]---------------------------[/align]
[align=left]M.Tansley Green[/align]
[align=left]J.Lulu green[/align]
[align=left]P.Bunny Yellow[/align]
[align=left]J.Troll Brown-3[/align]
[align=left]L.Tansley Brown-2[/align]
[align=left]正则表达式相关:[/align]
[align=left] [/align]
为使一域号匹配正则表达式,使用符号‘~’后紧跟正则表达式,也可以用
i f语句。awk中if后面的条件用()括起来。
#下面代码打印$4 包含 Brown
的行
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$4~/Brown/ {print $0}' grade.txt
[align=left]J.Troll 07/99 4842 Brown-3 12 26 26[/align]
[align=left]L.Tansley 05/99 4712 Brown-2 12 30 28[/align]
[align=left] [/align]
[align=left]#非精确匹配[/align]
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$3 ~/48/ {print $0}' grade.txt
[align=left]M.Tansley 05/99 48311 Green 8 40 44[/align]
[align=left]J.Lulu 06/99 48317 green 9 24 26[/align]
[align=left]P.Bunny 02/99 48 Yellow 12 35 28[/align]
[align=left]J.Troll 07/99 4842 Brown-3 12 26 26[/align]
[align=left] [/align]
[align=left]#精确匹配[/align]
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$3=="48" {print $0}' grade.txt
[align=left]P.Bunny 02/99 48 Yellow 12 35 28[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
#不匹配 使用
‘!~’
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$0 !~ /Brown/' grade.txt
[align=left]M.Tansley 05/99 48311 Green 8 40 44[/align]
[align=left]J.Lulu 06/99 48317 green 9 24 26[/align]
[align=left]P.Bunny 02/99 48 Yellow 12 35 28[/align]
[align=left] [/align]
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$4 != "Brown-2" {print $0}' grade.txt
[align=left]M.Tansley 05/99 48311 Green 8 40 44[/align]
[align=left]J.Lulu 06/99 48317 green 9 24 26[/align]
[align=left]P.Bunny 02/99 48 Yellow 12 35 28[/align]
[align=left]J.Troll 07/99 4842 Brown-3 12 26 26[/align]
[align=left] [/align]
[align=left]#小于[/align]
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$6 < $7 {print $0 "$1 Try better at the next comp"}' grade.txt
[align=left]M.Tansley 05/99 48311 Green 8 40 44$1 Try better at the next comp[/align]
[align=left]J.Lulu 06/99 48317 green 9 24 26$1 Try better at the next comp[/align]
[align=left] [/align]
[align=left]#设置大小写[/align]
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'/[Gg]reen/' grade.txt
[align=left]M.Tansley 05/99 48311 Green 8 40 44[/align]
[align=left]J.Lulu 06/99 48317 green 9 24 26[/align]
[align=left] [/align]
[align=left]#匹配第一个域的第三个字符是‘a’[/align]
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$1 ~/^...a/' grade.txt
[align=left]M.Tansley 05/99 48311 Green 8 40 44[/align]
[align=left]L.Tansley 05/99 4712 Brown-2 12 30 28[/align]
[align=left] [/align]
[align=left]#'或'匹配,使用 ‘|’ ,需使用括号括起来[/align]
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$0 ~/(Yellow|Brown)/' grade.txt
[align=left]P.Bunny 02/99 48 Yellow 12 35 28[/align]
[align=left]J.Troll 07/99 4842 Brown-3 12 26 26[/align]
[align=left]L.Tansley 05/99 4712 Brown-2 12 30 28[/align]
[align=left] [/align]
make it simple, make it happen
假设我们有这样一个待处理的文件"grade.txt":
[align=left]M.Tansley 05/99 48311 Green 8 40 44[/align]
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
[align=left] [/align]
[align=left]#打印整个文件[/align]
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
[align=left]$ awk '{print $0}' grade.txt[/align]
[align=left]M.Tansley 05/99 48311 Green 8 40 44[/align]
[align=left]J.Lulu 06/99 48317 green 9 24 26[/align]
[align=left]P.Bunny 02/99 48 Yellow 12 35 28[/align]
[align=left]J.Troll 07/99 4842 Brown-3 12 26 26[/align]
[align=left]L.Tansley 05/99 4712 Brown-2 12 30 28[/align]
[align=left]#打印第一和第四个域[/align]
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'{print $1,$4}' grade.txt
[align=left]M.Tansley Green[/align]
[align=left]J.Lulu green[/align]
[align=left]P.Bunny Yellow[/align]
[align=left]J.Troll Brown-3[/align]
[align=left]L.Tansley Brown-2[/align]
[align=left] [/align]
[align=left]#打印表头[/align]
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'BEGIN {print "Name Belt\n---------------------------"}
[align=left]> {print $1"\t"$4}' grade.txt[/align]
[align=left]Name Belt[/align]
[align=left]---------------------------[/align]
[align=left]M.Tansley Green[/align]
[align=left]J.Lulu green[/align]
[align=left]P.Bunny Yellow[/align]
[align=left]J.Troll Brown-3[/align]
[align=left]L.Tansley Brown-2[/align]
[align=left]正则表达式相关:[/align]
[align=left] [/align]
为使一域号匹配正则表达式,使用符号‘~’后紧跟正则表达式,也可以用
i f语句。awk中if后面的条件用()括起来。
#下面代码打印$4 包含 Brown
的行
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$4~/Brown/ {print $0}' grade.txt
[align=left]J.Troll 07/99 4842 Brown-3 12 26 26[/align]
[align=left]L.Tansley 05/99 4712 Brown-2 12 30 28[/align]
[align=left] [/align]
[align=left]#非精确匹配[/align]
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$3 ~/48/ {print $0}' grade.txt
[align=left]M.Tansley 05/99 48311 Green 8 40 44[/align]
[align=left]J.Lulu 06/99 48317 green 9 24 26[/align]
[align=left]P.Bunny 02/99 48 Yellow 12 35 28[/align]
[align=left]J.Troll 07/99 4842 Brown-3 12 26 26[/align]
[align=left] [/align]
[align=left]#精确匹配[/align]
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$3=="48" {print $0}' grade.txt
[align=left]P.Bunny 02/99 48 Yellow 12 35 28[/align]
[align=left] [/align]
[align=left] [/align]
[align=left] [/align]
#不匹配 使用
‘!~’
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$0 !~ /Brown/' grade.txt
[align=left]M.Tansley 05/99 48311 Green 8 40 44[/align]
[align=left]J.Lulu 06/99 48317 green 9 24 26[/align]
[align=left]P.Bunny 02/99 48 Yellow 12 35 28[/align]
[align=left] [/align]
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$4 != "Brown-2" {print $0}' grade.txt
[align=left]M.Tansley 05/99 48311 Green 8 40 44[/align]
[align=left]J.Lulu 06/99 48317 green 9 24 26[/align]
[align=left]P.Bunny 02/99 48 Yellow 12 35 28[/align]
[align=left]J.Troll 07/99 4842 Brown-3 12 26 26[/align]
[align=left] [/align]
[align=left]#小于[/align]
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$6 < $7 {print $0 "$1 Try better at the next comp"}' grade.txt
[align=left]M.Tansley 05/99 48311 Green 8 40 44$1 Try better at the next comp[/align]
[align=left]J.Lulu 06/99 48317 green 9 24 26$1 Try better at the next comp[/align]
[align=left] [/align]
[align=left]#设置大小写[/align]
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'/[Gg]reen/' grade.txt
[align=left]M.Tansley 05/99 48311 Green 8 40 44[/align]
[align=left]J.Lulu 06/99 48317 green 9 24 26[/align]
[align=left] [/align]
[align=left]#匹配第一个域的第三个字符是‘a’[/align]
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$1 ~/^...a/' grade.txt
[align=left]M.Tansley 05/99 48311 Green 8 40 44[/align]
[align=left]L.Tansley 05/99 4712 Brown-2 12 30 28[/align]
[align=left] [/align]
[align=left]#'或'匹配,使用 ‘|’ ,需使用括号括起来[/align]
[align=left]zhuyupeng@zhuyupeng-PC ~[/align]
$ awk
'$0 ~/(Yellow|Brown)/' grade.txt
[align=left]P.Bunny 02/99 48 Yellow 12 35 28[/align]
[align=left]J.Troll 07/99 4842 Brown-3 12 26 26[/align]
[align=left]L.Tansley 05/99 4712 Brown-2 12 30 28[/align]
[align=left] [/align]
make it simple, make it happen
相关文章推荐
- linux编译中的常见问题
- Dijkstra 算法
- 使用Messenger实现进程间的相互通信
- 338. Counting Bits
- 残缺的棋盘 数学
- Codeforces Round #349 (Div. 1)
- 如何解决 arm-none-linux-gnueabi-gcc -v和arm-linux-gcc 没有那个文件或目录
- Hadoop RPC基本框架
- BZOJ4379: [POI2015]Modernizacja autostrady
- char、wchar_t、strlen、wcslen
- div的层的覆盖
- App架构设计经验谈:接口的设计
- 山东省第三届ACM大学生程序设计竞赛-Pixel density(模拟)
- C# 文件重命名
- 为什么Enable BitCode(Xcode7)真机测试要修改为 NO
- 亿级 Web 系统的容错性建设实践
- PySide学习笔记第九章-对话框
- 实现带子菜单的选项菜单(学习笔记)
- C++ 左值引用和右值引用(C++11特性)
- POJ - 2387 Til the Cows Come Home(Dijkstra)