Linux | 12道AWK 练习

假设我们有这样一个待处理的文件 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

题目:

题目 1:打印整个文件
题目 2:打印第一和第四个列
题目 3:打印表头 Name Belt,然后显示文档第一列和第四列
题目 4:打印第四列包含 Brown 的行
题目 5:打印第三列包含 48 的行
题目 6:显示第三列是 48 的行
题目 7:显示不包含 Brown 的行
题目 8:打印第四列不是 Brown-2 的行
题目 9:当第六列大于第七列是,显示:$6 大于 $7
题目 10:当第一列的第三个字符是 a 时,显示该行
题目 11:显示包含 Yellow 或 Brown 的行
题目 12:显示文档第一列、第六列、第七列,如果第一列是 M.Tansley,则
先将其第六列的值减 1 后再输出

参考答案:

题目 1:参考答案:
$ awk '{print $0}' grade.txt
题目 2:参考答案
$ awk '{print $1,$4}' grade.txt
题目 3:参考答案
$ awk 'BEGIN {print "Name\tBelt\n---------------------"}
> {print $1"\t"$4}' grade.txt
题目 4:参考答案
$ awk '$4~/Brown/ {print $0}' grade.txt
题目 5:参考答案
$ awk '$3 ~/48/ {print $0}' grade.txt
题目 6:参考答案
$ awk '$3=="48" {print $0}' grade.txt
题目 7:参考答案
$ awk '$0 !~ /Brown/' grade.txt
题目 8:参考答案
$ awk '$4 != "Brown-2" {print $0}' grade.txt
题目 9:参考答案
$ awk '$6 < $7 {print $6,"大于",$7}' grade.txt
题目 10:参考答案
$ awk '$1 ~/^..a/' grade.txt
题目 11:参考答案
$ awk '$0 ~/(Yellow|Brown)/' grade.txt
题目 12:参考答案
$ awk '{if($1=="M.Tansley") $6=$6-1; print $1,$6,$7}' grade.txt

本文链接:

https://blog.zhigu34.cn/archives/62.html
1 + 1 =
快来做第一个评论的人吧~