我有一个有2列和n行数的文件。列1包含names和列2 age。我想根据age(在第二列中)以升序对此文件的内容进行排序。结果应该显示最年轻的人的name,然后是name,然后是第二年轻的人,依此类推。对单行程序、外壳或bash脚本的任何建议。
n
names
age
name
jvidinwx1#
您可以使用sort command的key选项,它接受“field number”,所以如果您想要第二列:
sort
key
sort -k2 -n yourfile
-n、--numeric-sort根据字符串数值进行比较例如:
-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
carvr3hs2#
sort -k 2 -n filename更详细地写成:sort --key 2 --numeric-sort filename
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
-k5
其他常见选项包括:
还有其他选择,但这些是我经常使用的最常见和最有用的选择。
jc3wubiy3#
对于制表符分隔值,可以使用以下代码
sort -t$'\t' -k2 -n
-r可用于按降序获取数据。-n表示数字排序-k,--key=pos1[,pos2]其中k是文件中的列对于降序,下面是代码
sort -t$'\t' -k2 -rn
slmsl1lt4#
使用sort。
sort ... -k 2,2 ...
2ledvvac5#
简单
$ sort -k2,2n <<<"$data"
5条答案
按热度按时间jvidinwx1#
您可以使用
sort
command的key
选项,它接受“field number”,所以如果您想要第二列:-n
、--numeric-sort
根据字符串数值进行比较例如:
carvr3hs2#
解决方案:
sort -k 2 -n filename
更详细地写成:
sort --key 2 --numeric-sort filename
示例:
说明:
-k5
将从每行中的第五个field开始排序,而不是每行中的第五个字符*)。更多:
其他常见选项包括:
还有其他选择,但这些是我经常使用的最常见和最有用的选择。
jc3wubiy3#
对于制表符分隔值,可以使用以下代码
-r可用于按降序获取数据。
-n表示数字排序
-k,--key=pos1[,pos2]其中k是文件中的列
对于降序,下面是代码
slmsl1lt4#
使用
sort
。2ledvvac5#
简单