2017-03-18 50 views
0

我想通过减少第二列的数量来排序文件,但不改变标题的位置。目前,它是这样在有两列这样一个CSV文件:Unix,按号码排序

Person  Age 

Sarah  15 

Robert  23 

Emma  31 

Bob  9 

我希望它是这样的:

Person  Age 

Emma  31 

Robert  23 

Sarah  15 

Bob  9 

请帮助在Unix的初学者。

回答

1

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

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

唯一的问题是,这个排序符合“个人时代”,好像有零的数值,并将其移动到文件的最后一行。排序文件后,您必须移动该行。

0

这将做的伎俩,除了删除空白行。

sed -n'1! p'sortme.txt | sort --key 2 --reverse --numeric-sort | SED '1 I \人\踏歌'> sorted.txt

〜帕特

+0

谢谢,他们来到前面,但他们没有在csv的不同单元格中分开。如何解决它? – reader

+0

对不起,我不明白你的问题。 –

+0

http://stackoverflow.com/questions/42877958/unix-separate-two-words-in-table我已经解释过了。 – reader

0

为了解决问题 “在前端板” 所概括的法案回答,您可以在除了使用awksort

awk 'NR==1 {print ; next } { print | "sort -n -r -k2" }' yourfile > sorted_file 
  • 条件NR==1只对第一行适用:它在打印
  • 所有其他线管道输送到sort命令(你可以做在01排序本身,但那会更长一些)