Linux中awk工具的使用详解( 五 )


$ awk '$3 < 5500 {print $0}' company.txtyahoo100 4500twitter 120 5000
上面的命令结果就是平均工资小于 5500 的公司名单,$3 < 5500表示当第 3 列字段的内容小于 5500 的时候才会执行后面的{print $0}代码块
$ awk '$1 == "yahoo" {print $0}' company.txtyahoo100 4500
awk 还有一些其他的条件操作符如下
=大于或等于
~匹配正则表达式
!~不匹配正则表达式
使用 if 指令判断来实现上面同样的效果
$ awk '{if ($3 < 5500) print $0}' company.txtyahoo100 4500twitter 120 5000
上面表示如果第 3 列字段小于 5500 的时候就会执行后面的print $0,很像 C 语言和 PHP 的语法对不对 。想到这里有一句话不知当讲不当讲,那就是 PHP 是世界上最好的语言 。。。我可能喝多了,但是突然想起来我好像从来不喝酒 。。。—_—
在 awk 中使用正则表达式
在 awk 中支持正则表达式的使用,如果你还对正则表达式不是很了解,请先停下来,上去搜一下 。
比如现在我们有这么一个文件 .txt 里面都是我写的诗,不要问我为什么那么的有才华 。内容如下:
This above all: to thine self be trueThere is nothing either good or bad, but thinking makes it soThere’s a special providence in the fall of a sparrowNo matter how dark long, may eventually in the day arrival
使用正则表达式匹配字符串 "There",将包含这个字符串的行打印并输出
$ awk '/There/{print $0}' poetry.txtThere is nothing either good or bad, but thinking makes it soThere’s a special providence in the fall of a sparrow
使用正则表达式配一个包含字母 t 和字母 e,并且 t 和 e 中间只能有任意单个字符的行
$ awk '/t.e/{print $0}' poetry.txtThere is nothing either good or bad, but thinking makes it soThere’s a special providence in the fall of a sparrowNo matter how dark long, may eventually in the day arrival
如果只想匹配单纯的字符串 "t.e",那正则表达式就是这样的/t\.e/,用反斜杠来转义.符号 因为.在正则表达式里面表示任意单个字符 。
使用正则表达式来匹配所有以 "The" 字符串开头的行
$ awk '/^The/{print $0}' poetry.txtThere is nothing either good or bad, but thinking makes it soThere’s a special providence in the fall of a sparrow