基于文件第二列中的值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 ...