Sorting 在unix中,如何使用一列作为组,另一列作为值对文件进行排序?
假设我有这个文件,使用Sorting 在unix中,如何使用一列作为组,另一列作为值对文件进行排序?,sorting,unix,Sorting,Unix,假设我有这个文件,使用sort-t$'\t'-k1,1-k3,3gr排序: echo "A 6 A 5 A 4 B 7 B 2 C 10 C 9 C 8 " > my_file 有办法这样点吗 C 10 C 9 C 8 B 7 B 2 A 6 A 5 A 4 基本上,我希望具有最大值的组首先出现(C),然后是具有下一个最大值的组(B),等等 我知道一种方法是创建一个辅助文件,如: 1,C 2,B 3,A 然后,我可以将其与原
sort-t$'\t'-k1,1-k3,3gr
排序:
echo "A 6
A 5
A 4
B 7
B 2
C 10
C 9
C 8
" > my_file
有办法这样点吗
C 10
C 9
C 8
B 7
B 2
A 6
A 5
A 4
基本上,我希望具有最大值的组首先出现(C
),然后是具有下一个最大值的组(B
),等等
我知道一种方法是创建一个辅助文件,如:
1,C
2,B
3,A
然后,我可以将其与原始文件合并,但假设我们事先不知道正确的顺序。好的,问这个问题只是帮助我想到了答案。我使用awk添加了一个额外的列,每个组的值最大,并使用它进行排序。有更简单的解决方案吗
awk -F"\t" -v OFS="\t" '
FNR == NR{
if ($2 > largest_by_group[$1]) {
largest_by_group[$1] = $2
}
next
}
{
print $1, $2, largest_by_group[$1]
}' my_file my_file | \
sort -t $'\t' -k3,3rg -k2,2rg |\
cut -f1,2
不,先按字母排序:
A:4a:5a:6b:2b:7c:10c:8c:9
。谢谢