没有合适的资源?快使用搜索试试~ 我知道了~
个人工作过程整理出来的文档,附带了很多的例子(非纯理论讲解),适合AWK的初学者。
资源推荐
资源详情
资源评论
AWK 介绍:一个报文格式化,从文本文件中抽取数据包的工具。
思维: 基于模式动作形式,在动作前指定特定的模式,使动作在记录满足模式时才执行。
基本概念:
1、模式和动作:
模式:即触发动作的条件,模式部分决定动作何时触发及触发事件。
可以是:a 条件语句 if($4=="Green")
b 复合语句 and (&&)、 or(||)、!
c 正则表达式 awk '$0 ~/[Gg]reen/ {print $0}' grade.txt
动作:对数据进行的操作。 动作必须用{}括起来
2、域和记录:
域:awk将标准输入的每一行按照分隔符分成n个域,依次为$1,$2,$3,…,$n
要输出域采用print语句,输出所有域使用$0.
判断AWK语句错误的一些依据:
1)、确保整个awk命令用单引号括起来;
2)、确保命令内的所有引号成对出现;
3)、确保用花括号括起动作语句,用圆括号括起条件语句;
重点知识点:
1、AWK输出报头和报尾及格式化输出。
BEGIN END 采用print语句格式输出
例如:
awk 'BEGIN {print "Name Belt\n----------------------"} {print
$1 "\t\t" $4} END {print "end-of-report"}' grade.txt
Name Belt
----------------------
M.Tansley 05/99 48311 Green 8 40 44
J.Lulu 06/99 48317 green 9 24 26
思维: 基于模式动作形式,在动作前指定特定的模式,使动作在记录满足模式时才执行。
基本概念:
1、模式和动作:
模式:即触发动作的条件,模式部分决定动作何时触发及触发事件。
可以是:a 条件语句 if($4=="Green")
b 复合语句 and (&&)、 or(||)、!
c 正则表达式 awk '$0 ~/[Gg]reen/ {print $0}' grade.txt
动作:对数据进行的操作。 动作必须用{}括起来
2、域和记录:
域:awk将标准输入的每一行按照分隔符分成n个域,依次为$1,$2,$3,…,$n
要输出域采用print语句,输出所有域使用$0.
判断AWK语句错误的一些依据:
1)、确保整个awk命令用单引号括起来;
2)、确保命令内的所有引号成对出现;
3)、确保用花括号括起动作语句,用圆括号括起条件语句;
重点知识点:
1、AWK输出报头和报尾及格式化输出。
BEGIN END 采用print语句格式输出
例如:
awk 'BEGIN {print "Name Belt\n----------------------"} {print
$1 "\t\t" $4} END {print "end-of-report"}' grade.txt
Name Belt
----------------------
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 Brow-3 12 26 26
L.Tansley 05/99 4712 Brow-3 12 30 28
end-of-report
tom@svr:~/ssh$
BEGIN: 设置计数和打印头
END:用来在a w k完成文本浏览动作后打印输出文本总数和结尾状态标志
2、使用正则表达式 ~
1)打印第4个域值为Green和green的行
tom@svr:~/ssh$ 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
tom@svr:~/ssh$
2)打印第4个域值非Green和green的行 !~
tom@svr:~/ssh$ awk '{if($4!~/[Gg]reen/) print $0}' grade.txt
P.Bunny 02/99 48 Yellow 12 35 28
J.Troll 07/99 4842 Brow-3 12 26 26
L.Tansley 05/99 4712 Brow-3 12 30 28
tom@svr:~/ssh$
3)匹配行中出现有特定字符的行,省去了if条件
tom@svr:~/ssh$ awk '$0 ~/[Gg]reen/ {print $0}' grade.txt
M.Tansley 05/99 48311 Green 8 40 44
J.Lulu 06/99 48317 green 9 24 26
tom@svr:~/ssh$
3、条件表达式
完全匹配某字符串 ==
tom@svr:~/ssh$ awk '{if($4=="Green") print $0}' grade.txt
M.Tansley 05/99 48311 Green 8 40 44
J.Troll 07/99 4842 Brow-3 12 26 26
L.Tansley 05/99 4712 Brow-3 12 30 28
end-of-report
tom@svr:~/ssh$
BEGIN: 设置计数和打印头
END:用来在a w k完成文本浏览动作后打印输出文本总数和结尾状态标志
2、使用正则表达式 ~
1)打印第4个域值为Green和green的行
tom@svr:~/ssh$ 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
tom@svr:~/ssh$
2)打印第4个域值非Green和green的行 !~
tom@svr:~/ssh$ awk '{if($4!~/[Gg]reen/) print $0}' grade.txt
P.Bunny 02/99 48 Yellow 12 35 28
J.Troll 07/99 4842 Brow-3 12 26 26
L.Tansley 05/99 4712 Brow-3 12 30 28
tom@svr:~/ssh$
3)匹配行中出现有特定字符的行,省去了if条件
tom@svr:~/ssh$ awk '$0 ~/[Gg]reen/ {print $0}' grade.txt
M.Tansley 05/99 48311 Green 8 40 44
J.Lulu 06/99 48317 green 9 24 26
tom@svr:~/ssh$
3、条件表达式
完全匹配某字符串 ==
tom@svr:~/ssh$ awk '{if($4=="Green") print $0}' grade.txt
M.Tansley 05/99 48311 Green 8 40 44
剩余6页未读,继续阅读
资源评论
Daly罗
- 粉丝: 27
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功