awk学习笔记(8) - 简单的正则匹配

简介:

匹配文件中符合要求的列

还是用之前的arr.dat来举例。

我们要找出所有时间为7点钟的记录,我们可以这样写:

 
 
  1. awk '/7/' arr.dat 

上面的程序会匹配出一行中含有数字7的记录,并整行输出(因为省略了action默认就是输出整行)。

如果ID中含有7,就算是在8点钟,上面的程序也会匹配出来,很杯具呀,改进一下:

 
 
  1. awk '$2 ~ /7/' arr.dat 

解释一下:$2指的是第二列,'~'表示的是匹配(match),'/7/'表示的是含有数字7,连起来就是匹配第二列中含有数字7的列。

很不幸的是,上面的这个程序也是有bug的,因为一旦第二列的分钟或秒钟里出现了数字7,也会匹配出来,怎么办呢?再改进一下:

 
 
  1. awk '$2 ~ /7:/' arr.dat 

加一个冒号之后,这就可靠得多了,这只会找出冒号之前有数字7的。

输出结果:

 
 
  1. 1034 7:26  
  2. 1025 7:27 
  3. 1101 7:32  
  4. 1006 7:45 
  5. 1012 7:46  
  6. 1028 7:49  
  7. 1051 7:51 
  8. 1029 7:57  
  9. 1042 7:59 

还有没有别的写法呢?答案是,有:

 
 
  1. awk '$2 ~ /^7/' arr.dat 

解释一下,'/^7/'表示是以7开头,所以整个语句表示的就是匹配第二列中以7开头的记录,输出的结果跟上面是一样的。










本文转自 ustb80 51CTO博客,原文链接:http://blog.51cto.com/ustb80/1033631,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
索引 Python
正则表达式详解
正则表达式详解
|
7月前
|
自然语言处理
正则表达式1
正则表达式
|
8月前
|
JavaScript 前端开发 Java
正则表达式详细讲解
正则表达式详细讲解
正则表达式详细讲解
|
XML PHP 数据安全/隐私保护
常用的正则表达式
正则表达式是一种描述字符串结构的语法规则,是一种特定的格式化模式,用于验证各种字符串是否匹配(Match)这个特征,进而实现高级的文本查找、替换、截取等操作。 正则表达式在发展过程中出现了多种形式,一种是POSIX规范兼容的表达式,另一种是当Perl(一种功能丰富的编程语言)发展起来后,衍生出来的PCRE(Perl兼容正则表达式)库,使得许多开发人员将PCRE整合到自己的语言中,PHP中也未PCRE库的使用提供了相应的函数。
185 0
|
JavaScript 前端开发 索引
|
JavaScript C# 前端开发