首页 > 解决方案 > 如何根据文件的第一个值的条件在 Linux 中对输出文件进行排序?

问题描述

我有一个来自 Perl 脚本的输出,其中包含 500 多个数字(正数和负数)。我想根据该输出的第一个值进行排序。

例如:

-2 or 2
 3
-1
-5

如果第一个值是,2那么输出应该是:

 3
 2
-1
-5

如果第一个值是,-2那么输出应该是:

-5 
-2
-1
 3

我写

# if the first value is positive number then do a reverse sort, if negative do a normal sort.
script outpout| {if [[awk FNR == 1 && $1 -le 0]] then sort -k1nr else sort k1n  fi } 

我得到了> (blinking space)一个输出。我的语法有什么问题吗(缺少符号?)如果您知道如何使用另一种方式进行这种排序,那将是受欢迎的。

标签: linuxbashsortingcommand-lineterminal

解决方案


这应该可以解决问题:


FIRST=`head -1 output`

if [ $FIRST -lt 0 ]
then
    #Negative
    sort -n output
elif [ $FIRST -gt 0 ]
then
    #Positive
    sort -nr output
else
    echo "Neither Positive Nor Negative"
fi

推荐阅读