手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

文本数据处理之AWK 图解

[日期:2013-09-03] 来源:Linux社区  作者:zhengliyang [字体: ]

六、awk的输出模式

1、awk 'program' input-file1 input-file2 ...

其中的program为:

pattern { action }

pattern { action }

......

 

2、常见的模式类型

Regexp: 正则表达式,格式为/regular expression/

expresssion: 关系表达式,其值非0或为非空字符时满足条件,可以是字符串或数字的比较

Ranges: 指定的匹配范围,格式为pat1,pat2

BEGIN/END:特殊模式,仅在awk命令执行前运行一次或结束前运行一次

BEGIN模式是 在真正处理之前做些准备工作的功能,END模式是 在运行之后输出相关信息。

Empty(空模式):匹配任意输入行;

3、常见的语句动作

 

Expressions : 表达式

Control statements: 控制语句

Compound statements : 组合语句

Input statements : 输入语句

Output statements : 输出语句

七、控制语句

1、if-else

语法:if (condition) {then-body} else {[ else-body ]}

 

1
# awk -F: '{if ($1=="root") printf "%-15s: %s\n", $1,"Admin"; else printf "%-15s: %s\n", $1, "Common User"}' /etc/passwd

2、while

此while语句在awk中的作用体现是要么做成的循环体,要么在某个片上的循环

语法: while (condition){statement1; statment2; ...}

 

1
# awk -F: '{i=1;while (i<=3) {print $i;i++}}' /etc/passwd

3、do-while

与while语句不同之处在:不管条件真假先执行一次循环体,再执行控制语句

语法: do {statement1, statement2, ...} while (condition)

 

1
# awk -F: '{i=1;do {print $i;i++}while(i<=3)}' /etc/passwd

4、for

语法: for ( variable assignment; condition; iteration process) { statement1, statement2, ...}

 

1
# awk -F: '{for(i=1;i<=NF;i++) { if (length($i)>=4) {print $i}}}' /etc/passwd

for循环还可以用来遍历数组元素

语法: for (i in array) {statement1, statement2, ...}

 

1
# awk -F: '$NF!~/^$/{BASH[$NF]++}END{for(A in BASH){printf "%15s:%i\n",A,BASH[A]}}' /etc/passwd

 

5、case

语法:switch (expression) { case VALUE or /REGEXP/: statement1, statement2,... default: statement1, ...}

 

6、break 和 continue

常用于循环或case语句中

7、 next

提前结束对本行文本的处理,并接着处理下一行

 

1
# awk -F: '{if($3%2==0) next;print $1,$3}' /etc/passwd
linux
相关资讯       awk 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款