将单字段编号替换为双字段编号 (1->01)

将单字段编号替换为双字段编号 (1->01)

我有以下文件,开头为

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

相关内容