sorting - 对值进行排序并输出其排序列的索引

标签 sorting unix awk cut

我有一个如下所示的文件:

20 30 40
80 70 60
50 30 40

每一列代表一个过程。我想知道每一行的程序是如何执行的。我理想的输出是

3 2 1
1 2 3
1 3 2

即在第 1 行中,第三列具有最高值,然后是第二列,然后是第一个最小值(这可以颠倒过来,并不重要)。

我该怎么做?

最佳答案

我会使用其他一些 Unix 工具(readcatsortcut、当然还有 trsedbash):

while read line
do
  cat -n <(echo "$line" | sed 's/ /\n/g') | sort -r -k +2 | cut -f1 | tr '\n' ' '
  echo
done < input.txt

输出如下所示:

 3      2      1 
 1      2      3 
 1      3      2 

关于sorting - 对值进行排序并输出其排序列的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22055055/

相关文章:

sql-server - 使用 Windows 身份验证从 Spring Boot 应用程序连接到 MSSQL

perl - 如何在 unix 环境中的任何地方运行 perl 脚本?

algorithm - 使用 opencl 对哈希进行排序

c++ - 基于矩阵引起的排序对 vector 进行排序时出现段错误

bash - 如何在当前 shell 中执行命令的输出?

bash - awk:如何将常量添加到 M 行中每第 N 行的数字?

regex - 使用awk将第一列从十六进制转换为十进制

awk - 如何在bash中以科学计数法形式对所有数字求和

javascript - 使用 AngularJS 对标题单击的表格进行排序,该表格同时包含数字和字符串作为列值

linux - 我如何强制排序命令将 'ADNP-AS1' 放在 'ADNP2' 之后,而不是相反?