awk模式匹配
来源:互联网 发布:郑州电力编程招聘 编辑:程序博客网 时间:2024/06/06 20:44
在这篇文章中,我们将看到许多小的,甚至没有什么意义的例子,但他们能够验证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.
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." }
/[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
$
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"被标识为既是整数又是字符串。一行可以匹配一条或多条规则。你可以编写一个更严格的规则以防止一行与多条规则相匹配。也可以编写操作来跳过脚本中的其他部分。
参考资料:http://www.linuxawk.com/communication/463.html
0 0
- awk中的模式匹配
- awk模式匹配
- 1.awk 模式匹配 记录和字段
- 在awk模式匹配中使用自定义变量
- awk脚本 模式匹配语句 ~匹配运算符 !~不匹配运算符
- awk模式
- awk匹配文本小记
- awk正则匹配
- awk 替换 匹配
- awk 匹配案例
- awk匹配整行
- awk匹配操作符
- awk 字段匹配
- awk 不支持的正则匹配
- AWK 使用与或匹配
- awk中的匹配区间问题
- sed,awk多条件匹配
- AWK模式处理语言
- HDOJ 1010 Tempter of the Bone诱惑者的骨
- C++ 中的类型转换函数
- JSP本质
- Matlab画三维图笔记
- 黑马程序员 <java基础<集合知识点>>
- awk模式匹配
- Object-c内存管理简介
- UVa 1124 - Celebrity jeopardy
- scollView中实现缩放
- pulltorefresh自定义属性
- C-内存
- Python:mechanize模拟浏览器行为
- hiho第二周——Trie树
- 自动登录和记住密码