【shell】 awk + sort 按照数据中某列对数据进行排序


Shell 按照列对数据进行排序 元数据

GET //api/ 12 100.122.183.158
GET //api/ 11 100.122.183.158
GET //api/ 21 100.122.183.158
GET //api/ 21 100.122.183.158
GET //api/ 23 100.122.183.158
GET //api/ 2 100.122.183.158
GET //api/ 2 100.122.183.158
GET //api/ 26 100.122.183.158
GET //api/ 22 100.122.183.158
GET //api/ 21 100.122.183.158

使用awk进行排序

for i in $(awk -F ' ' '{print NR,$3}' data.txt | sort -rn -k2 | awk '{print$1}')
do
    awk 'NR=='$i' {print}' data.txt
done

其中awk -F ' ' '{print NR,$3}' data.txt | sort -rn -k2 | awk '{print$1}' 取出按照第三列进行从大到小排序后的行号sort -rn -k2 按照第二列进行逆序排序