Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何在shell中按数字对字母数字进行排序_Bash_Unix_Sh - Fatal编程技术网

Bash 如何在shell中按数字对字母数字进行排序

Bash 如何在shell中按数字对字母数字进行排序,bash,unix,sh,Bash,Unix,Sh,输入文件包含以下数据: abc90 cd 18 bc14de 100def 输出应为: bc14de cd 18 abc90 100def 是否有任何sort命令仅按字母数字数据中嵌入的数字进行排序 我试过了,但效果不理想: # sort -g FileName 您可以使用: awk -v OFS='\t' '{rec=$0; gsub(/[^[:digit:]]+/, "", rec); print rec, $0}' file | sort -nk1 | cut -d $'\t

输入文件包含以下数据:

abc90
cd 18
bc14de
100def
输出应为:

bc14de
cd 18
abc90
100def
是否有任何
sort
命令仅按字母数字数据中嵌入的数字进行排序

我试过了,但效果不理想:

# sort -g FileName
您可以使用:

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
    最后用于截断第一列

Thnq,但我对awk的用法还不熟悉,有什么简单的命令你可以随时学习。不管怎样,如果没有awk,您可以使用:
paste