我有一个包含两列和n多行的文件.
第1列包含names和column2 age.
我想根据age(在第二列)按升序对此文件的内容进行排序.
结果应该显示name最年轻的人name,然后是第二个最年轻的人,依此类推......
有关单线程shell或bash脚本的任何建议.
Mat*_*all 292
您可以使用以下sort命令:
sort -k2 -n yourfile
Run Code Online (Sandbox Code Playgroud)
-n,--numeric-sort根据字符串数值进行比较
例如:
$ cat ages.txt
Bob 12
Jane 48
Mark 3
Tashi 54
$ sort -k2 -n ages.txt
Mark 3
Bob 12
Jane 48
Tashi 54
Run Code Online (Sandbox Code Playgroud)
DCu*_*rro 78
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
Run Code Online (Sandbox Code Playgroud)
-k # - 此参数指定将用于排序的第一列.(请注意,此处的列定义为以空格分隔的字段;参数-k5将从每行中的第五个字段开始排序,而不是每行中的第五个字符)
-n - 此选项指定"数字排序",表示该列应解释为一行数字而不是文本.
其他常见选项包括:
还有其他选择,但这些是我经常使用的最常见和最有用的选项.
为制表符分隔值下面的代码可以使用
sort -t$'\t' -k2 -n
Run Code Online (Sandbox Code Playgroud)
-r可用于以降序获取数据。
-n为数字的排序
对于降序下面是代码
sort -t$'\t' -k2 -rn
Run Code Online (Sandbox Code Playgroud)
使用sort.
sort ... -k 2,2 ...
Run Code Online (Sandbox Code Playgroud)