Unix,按编号排序

时间:2017-03-18 14:59:41

标签: shell unix

我希望通过减少第二列的数量来对文件进行排序,但不会更改标题的位置。目前在csv文件中就像这样有两列如下:

Person     Age

Sarah      15

Robert     23

Emma       31

Bob        9

我希望它是这样的:

Person     Age

Emma       31

Robert     23

Sarah      15

Bob        9

请帮助Unix中的初学者。

3 个答案:

答案 0 :(得分:1)

阅读http://man7.org/linux/man-pages/man1/sort.1.html以了解UNIX / Linux上的sort命令。那就是我和其他人的学习方式。

$ sort --key 2 --reverse --numeric-sort myfile > mysortedfile

唯一的问题是,这个排序与"人的年龄"好像它的数值为零,并将其移动到文件的最后一行。然后,您必须在排序文件后移动该行。

答案 1 :(得分:0)

除了删除空行外,这将解决问题。

sed -n'1! p'saltme.txt | sort --key 2 --reverse --numeric-sort | sed'1 i \ Person \ tAge'> sorted.txt

〜专利

答案 2 :(得分:0)

要解决票据答案中列出的“前方标题”问题,除了awk之外,您还可以使用sort

awk 'NR==1 {print ; next } { print | "sort -n -r -k2"  }' yourfile > sorted_file
  • 条件NR==1仅适用于第一行:打印
  • 所有其他行都通过管道传输到sort命令(您可以在awk本身进行排序,但这会更长一些)