linux系统模式匹配,awk模式匹配_Linux编程_Linux公社-Linux系统门户网站

在这篇文章中,我们将看到许多小的,甚至没有什么意义的例子,但他们能够验证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"被标识为既是整数又是字符串。一行可以匹配一条或多条规则。你可以编写一个更严格的规则以防止一行与多条规则相匹配。也可以编写操作来跳过脚本中的其他部分。

--------------------------------------分割线 --------------------------------------

--------------------------------------分割线 --------------------------------------

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值