频道栏目
首页 > 资讯 > 浏览器 > 正文

awk模式匹配

15-06-10        来源:[db:作者]  
收藏   我要投稿

在这篇文章中,我们将看到许多小的,甚至没有什么意义的例子,但他们能够验证awk程序脚本的主要
特点。

当awk读入一行时,它试图匹配脚本中的每个模式匹配规则。只有与一个特定的模式相匹配的输入行才能成为操作对象。如果没有指定操作,与模式相匹配的输入行将被打印出来(执行打印语句是一个默认操作)。参阅下面的脚本:

/^$/ { print "This is a blank line." }

该脚本表示:如果输入行为空,那么打印"This is a blank line" 。这里的模式为一个正则表达式,用来表示一个空行。这个处理和我们以前所见到的一样,只包含一条print语句。

如果我们将这个脚本放在一个称为awkscr的文件中,并使用名为test的输入文件,这个文件中包含3个空行,然后使下面的命令执行这个脚本:

$ awk -f awkscr test
This is a blank line.
This is a blank line.
This is a blank line.

(从这里开始,我们将假定脚本放在一个单独的文件中,并使用-f命令行选项来调用。)这个结果告诉我们在test中有3个空行,脚本忽咯了非空的行。

给以上的脚本加入几个新的规则。现在的脚本要对输入进行分析,并将他们归类为整数、字符串或空行。

/[0-9]+/ { print "That is an integer" }
/[A-Za-z]+/ { print "This is a string" }
/^$/ { print "This is a blank line." }

总的思想是,如果一个输入行能够和任何一个模式匹配,那么就执行相关的print语句。元字符+是正则表达式元字符拓展集中的一部分,它表示"一个或更多"。因此,包含一个或多个数字序列的行将被看作是一个整数。以下是一个使用标准输入的运行示例:

$ awk -f awkscr
4
That is an integer
t
This is a string
4T
That is an integer
This is a string
RETURN
This is a blank line.
44
That is an integer
CTRL-D
$

注意,输入"4T"被标识为既是整数又是字符串。一行可以匹配一条或多条规则。你可以编写一个更严格的规则以防止一行与多条规则相匹配。也可以编写操作来跳过脚本中的其他部分。

相关TAG标签
上一篇:hibernate关联映射
下一篇:只需几步任何人都能破解你的WhatsApp帐户
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站