基于文件第二列中的值sorting数据

我有一个两列和n行的文件。

第1列包含names和第2列的age

我想根据age (第二列)按升序排列此文件的内容。

结果应显示最年轻的人的name ,然后第二个最年轻的人,等等…

任何build议单线程shell或bash脚本。

你可以使用sort命令:

 sort -k2 -n yourfile 

例如:

 $ cat ages.txt Bob 12 Jane 48 Mark 3 Tashi 54 $ sort -k2 -n ages.txt Mark 3 Bob 12 Jane 48 Tashi 54 

解:

sort -k 2 -n filename

更详细地写为:

sort --key 2 --numeric-sort filename


例:

 $ cat filename A 12 B 48 C 3 $ sort --key 2 --numeric-sort filename C 3 A 12 B 48 

说明:

  • -k – 此参数指定将使用哪个列进行sorting。

  • -n – 此选项指定一个“数字sorting”,意思是该列应该散布为一行数字,而不是文本。


更多:

其他常见选项包括:

  • -r – 此选项反转sorting顺序。 它也可以写成 – 反向
  • -i – 此选项忽略可打印的字符。 它也可以写成–ignore-nonprinting
  • -b – 此选项忽略前导空格,因为使用空格来确定行数,所以这很方便。 它也可以写成–ignore-leading-blanks
  • -f – 此选项忽略字母大小写。 “A” == “A”。 它也可以写成–ignore-case
  • -t – 此选项使预处理使用空间以外的操作员。 它也可以写成 – 字段分隔符。

还有其他的select,但是这些是我常用的最常用和最有帮助的选项。

使用sort

 sort ... -k 2,2 ...