我正在运行以下命令来处理一些CSV数据
grep -i "area harvested.*2005" ps1_apricot_countries_2005.csv | sed 's/\"//g'
这导致以下输出(仅显示为样本的前7个记录):
Afghanistan,31,Area Harvested,2005,Ha,5200.00000,F
Africa +,31,Area Harvested,2005,Ha,59536.00000,A
Albania,31,Area Harvested,2005,Ha,400.00000,F
Algeria,31,Area Harvested,2005,Ha,22888.00000,
Americas +,31,Area Harvested,2005,Ha,11496.00000,A
Argentina,31,Area Harvested,2005,Ha,2200.00000,F
Armenia,31,Area Harvested,2005,Ha,5300.00000,
Asia +,31,Area Harvested,2005,Ha,272644.00000,A
可以看出,这是按第一列的字母顺序排序的。
我正在尝试将其传输到sort
,以便我可以根据第6个数字逗号分隔列按降序对上述数据进行排序。
我试过了:
grep -i "area harvested.*2005" ps1_apricot_countries_2005.csv | sed 's/\"//g' | sort -k6rn
然而,这导致以下结果(前7条记录仅作为样本显示):
Afghanistan,31,Area Harvested,2005,Ha,5200.00000,F
Africa +,31,Area Harvested,2005,Ha,59536.00000,A
Albania,31,Area Harvested,2005,Ha,400.00000,F
Algeria,31,Area Harvested,2005,Ha,22888.00000,
Americas +,31,Area Harvested,2005,Ha,11496.00000,A
Argentina,31,Area Harvested,2005,Ha,2200.00000,F
Armenia,31,Area Harvested,2005,Ha,5300.00000,
它似乎仍然按降序排列在第一列而不是第六列。任何人都可以解释如何纠正上述方法来实现这一目标吗?
答案 0 :(得分:6)
您可以使用以下类别:
sort -t, -rnk6
对第6个数字字段降序排序,由,
分隔。
-t,
用于告诉sort
字段以逗号分隔。-rnk6
用于按字段6的反向数字顺序排序这将提供此输出:
Asia +,31,Area Harvested,2005,Ha,272644.00000,A
Africa +,31,Area Harvested,2005,Ha,59536.00000,A
Algeria,31,Area Harvested,2005,Ha,22888.00000,
Americas +,31,Area Harvested,2005,Ha,11496.00000,A
Armenia,31,Area Harvested,2005,Ha,5300.00000,
Afghanistan,31,Area Harvested,2005,Ha,5200.00000,F
Argentina,31,Area Harvested,2005,Ha,2200.00000,F
Albania,31,Area Harvested,2005,Ha,400.00000,F