awk按一列排序,但必须打印所有这些

时间:2014-11-12 08:14:30

标签: sorting awk

我可以找到任何可能有人敞开心扉的方式

awk '{$3=cet print $0 }' < sort < awk '{cet=$3 }' file.txt

输入

 1  00A0asd4426         18/10/2014 09:08:50 
 2  00A0Bsdfsdf         No data found
 3  0asdasdsda3         25/10/2014 10:31:53 

输出

  1 00A0asd4426         18/10/2014 09:08:50
  3 0asdasdsda3         25/10/2014 10:31:53 
  2 00A0Bsdfsdf         No data found

2 个答案:

答案 0 :(得分:1)

我认为你应该使用 unix工具。

例如,如果想要按第二列排序为数字,可以使用:

sort -k2n inputfile

输入文件:

aaa 123 xxx
bbbxxx 1 yyy
xxxccc 0 zzz
ddd 15 xx

输出:

xxxccc 0 zzz
bbbxxx 1 yyy
xxxccc 1 aaa
ddd 15 xx
aaa 123 xxx

或者您可以使用字符串比较:

sort -k2 inputfile

输出:

xxxccc 0 aaa
xxxccc 0 zzz
bbbxxx 1 yyy
aaa 123 xxx
ddd 15 xx

使用-t可以设置分隔符。默认是空格。使用-s可以使其稳定排序。而且还有很多可能性。阅读man sort(1)可能有所帮助!

我希望这有帮助!

答案 1 :(得分:1)

执行此操作的规范方法是使用sort -k

$ cat l
a d 1
b c 2
c b 3

测试:

$ sort -k2 l
c b 3
b c 2
a d 1

如果您处理数字,请使用-n开关,-t DEL DEL 是您自己的分隔符(默认为空格)