标签:
最近统计线上log比较多,每次都用到sort,但是发现没有完全理解sort这个命令
1、问题一: 排序后存放在另一个文件中
sort -k 2 -k 3 login.txt > login.log
自己通过后缀区分排序后的文件,这样做也有好处可以做个备份,其实不想要备份的时候可以用 -o
sort -k2 -k3 login.txt -o login.txt sort -k2 -k3 login.txt -o login.log
2、问题二:我想已第二列去重
cat login.txt | awk ‘{arr[$2]=$0}END{for(a in arr)print arr[a];}‘
其实这个有点麻烦了
sort -k2,2 -u log
-k2 是不行的,因为-k2 他会比较从第2列开始到最后的最后
要继续往下深入的话,就不得不来点理论知识。你需要了解-k选项的语法格式,如下: [ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ] 这个语法格式可以被其中的逗号(“,”)分为两大部分,Start部分和End部分。 先给你灌输一个思想,那就是“如果不设定End部分,那么就认为End被设定为行尾”。这个概念很重要的,但往往你不会重视它。 Start部分也由三部分组成,其中的Modifier部分就是我们之前说过的类似n和r的选项部分。我们重点说说Start部分的FStart和C.Start。 C.Start也是可以省略的,省略的话就表示从本域的开头部分开始。之前例子中的-k 2和-k 3就是省略了C.Start的例子喽。 FStart.CStart,其中FStart就是表示使用的域,而CStart则表示在FStart域中从第几个字符开始算“排序首字符”。 同理,在End部分中,你可以设定FEnd.CEnd,如果你省略.CEnd,则表示结尾到“域尾”,即本域的最后一个字符。或者,如果你将CEnd设定为0(零),也是表示结尾到“域尾”。
标签:
原文地址:http://www.cnblogs.com/bai-jimmy/p/4459988.html