我有以下文件,开头为
male 9
male 11
male 9
male 1
female 4
female 13
male 14
如果我使用
sort -u -k1,1 -k2,2n
这返回
female 13
female 4
male 1
male 11
male 14
male 9
male 9
如何使个位数显示为 01、02 等,以便它们正确排序?
更新:
-u
告诉我将其移到后面的评论者是正确的。
sort -k1,1 -k2,2n -u
效果非常好,谢谢!
答案1
您还没有定义“正确排序“ 任何地方,所以我假设您想要按第一列进行分组,并按第二列的升序数值进行排序,并删除重复值。这个解决方案并不是您实际要求的,但似乎成为你想要的样子。
sort -k1,1 -k2,2n -u datafile
female 4
female 13
male 1
male 9
male 11
male 14
如果您确实希望第二列填充两位数字,您可以使用此
xargs printf "%s %02d\n" <datafile
male 09
male 11
male 09
male 01
female 04
female 13
male 14
答案2
如果您只想按第二列排序,您可以尝试以下操作(使用 GNU sed
):
sed -E 's/ ([0-9]{1}$)/ 0\1/' file | sort -u -k2,2n
输出:
male 01
female 04
male 09
male 11
female 13
male 14