如何在shell中按数字排序字母数字

时间:2015-08-08 03:08:50

标签: bash unix sh

输入文件包含数据:

abc90
cd 18
bc14de
100def

输出应为:

bc14de
cd 18
abc90
100def

是否有sort命令只能按字母数字数据中嵌入的数字进行排序?

我尝试了这个,但它不能按我的意愿运作:

# sort -g FileName

1 个答案:

答案 0 :(得分:4)

您可以使用:

awk -v OFS='\t' '{rec=$0; gsub(/[^[:digit:]]+/, "", rec); print rec, $0}' file
    | sort -nk1 | cut -d $'\t' -f2-
bc14de
cd 18
abc90
100def
  • awk用于使用gsub
  • 在输入中添加仅包含数字字符的第一列
  • sort -nk1用于在第一列上以数字方式对输入进行排序
  • cut最终用于截断第一列