在命令行中对数字进行排序

时间:2018-04-15 18:11:09

标签: bash shell command-line

我想要的是如果我输入任何以空格分隔的数字,它将按升序排序。我在bash创建的文件中有这个。

re='^[0-9]+$'
if ! [[ $1 =~ $re ]] ; then
   echo "error: Not a number" >&2; exit 1
else 
   printf "%s\n" $@ | sort -n 
fi

基本上上面的id是如果用户输入非数字,它将显示错误,否则将对数字进行排序。

所以如果我输入命令:$:sh sort.sh 12 0 13.这将命令

0

12

13

现在我的问题是我不希望它在一个新行中,而是我想在一个空格中。

1 个答案:

答案 0 :(得分:1)

sort是基于行的工具,因此您无法在调用之前删除换行符。但是,您可以在数据排序后用空格替换它们,例如使用tr

re='^[0-9]+$'
if ! [[ $1 =~ $re ]] ; then
   echo "error: Not a number" >&2; exit 1
else 
   printf "%s\n" $@ | sort -n | tr '\n' ' '
fi