首页 > 其他 > 详细

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

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

假设现在有如下一个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命令的小例子

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!