码迷,mamicode.com
首页 > 其他好文 > 详细

一个关于awk命令和sort命令的小例子

时间:2015-02-03 19:34:49      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:awk   shell   sort   

假设现在有如下一个txt的文本记录:

a|b|c|150203161843.289|||
1|2|c|150203161843.300|||
a|m|c|150203161943.289|||
|b|c|150203162843.289|||
a||c|150203171843.289|||

按|分割后的第四个域表示的时间,假设现在需要把第四个域单独提取到一个文件中,那么使用下面的命令即可完成:

cat test.txt | awk -F "|" ‘{print $4}‘ 

结果如下:

150203161843.289
150203161843.300
150203161943.289
150203162843.289
150203171843.289

-F指定列的分隔符,这里的|是shell中的元字符,因此需要使用双引号,然后打印第四列即可。非常简单但是实用的用法。

如果要输出到一个文件直接重定向到该文件即可。如果要对输出的结果按照从大到小的顺序排序,直接再通过管道命令用sort排序即可

cat test.txt | awk -F "|" ‘{print $4}‘ | sort -n -r

-n指定以数字方式-r是逆序也就是从大到小。

如果我们要打印时间字段大于150203161843.300的行那么又该如何实现呢?同样非常简单

cat test.txt | awk -F "|" ‘($4>150203161843.300){print $4}‘

只是多了($4>150203161843.300)这里是个条件表达式表示如果满足则执行后面的{}中的逻辑。这里也可以使用类c语言的风格使用if(){}else{}。


sort命令很明显是用来排序的,提供了非常灵活的排序方式,还是拿上面的例子,如果需要按照第四列时间进行排序,则可以写成下面的命令

cat test.txt | sort -t "|" -k 4

-t的意思是指定列分隔符,-k指定按照哪一列进行排序-k 4是指定第四列,如果还需要根据第一列,则可以继续-k。sort功能还包括去重甚至从某一列的第几个字符开始比较,功能也是很强大的。



一个关于awk命令和sort命令的小例子

标签:awk   shell   sort   

原文地址:http://blog.csdn.net/tangyongzhe/article/details/43451549

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!