linux - 如何根据文件的第一个值的条件在 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)
一个输出。我的语法有什么问题吗(缺少符号?)如果您知道如何使用另一种方式进行这种排序,那将是受欢迎的。
解决方案
这应该可以解决问题:
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
推荐阅读
- apache-spark - 无法在已停止的 SparkContext 上调用方法。这个停止的 SparkContext 创建于
- r - 如何在基础 R 中为某些变量指定颜色
- python - 如何从第二个数据集中的列中为每个人计算最新值?
- c# - 以编程方式将新列添加到 DataGridView(填充有 DataTable 的 DataGridview)
- javascript - JavaScript 条件量角器测试
- python - UnicodeDecodeError:“utf-8”编解码器无法解码字节 0xff
- django - 在 django 中进行查询并返回我所有对象的总和
- openshift - 如何在 eclipse-che 中加载 dockerimage?
- r - 如何在热图上更改颜色等
- javascript - 我如何在firebase中使用这个“创建于”字段来使用toDate()在javascript中获取日期?