假设现在有如下一个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功能还包括去重甚至从某一列的第几个字符开始比较,功能也是很强大的。
原文地址:http://blog.csdn.net/tangyongzhe/article/details/43451549