linux - 按第二字段和第三字段的乘积排序(Linux)

标签 linux shell sorting

我有一个包含产品列表的文件。每行看起来像这样:产品 - 件数 - 价格。我想按 pcs*price 值对其进行排序。

最佳答案

您确实应该考虑使用 Excel 或 libreoffice 等电子表格,一旦将文件导入到电子表格中,对列进行排序和相乘就非常容易了。

话虽如此:如果您熟悉 GNU Awk,这样的脚本就可以工作:

artcls.awk

BEGIN   { # sort array numerically
        PROCINFO["sorted_in"] = "@ind_num_asc"
        FS=" - "
      }

      { p = $2 * $3
        if ( p in lines ) {
          lines[ p ] = lines[ p ] "\n" $0
        }
        else lines[ p ] = $0
      }
END { for( p in lines ) print lines[ p ], p }

您可以像这样使用它:awk -f artcls.awk your_file

关于linux - 按第二字段和第三字段的乘积排序(Linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36847886/

相关文章:

java - 在选择排序项目中,10 个元素的数组仅接受 5 个整数

linux - 可以将 10 个相似的函数变成一个 for 循环吗?

linux - 在 CSV 文件末尾添加空列

Linux 命令行帮助 |从文件中提取特定部分

linux - Windows shell 脚本中的 echo %ERRORLEVEL% 与 echo $?在Linux中: are there any differences in behavior?

linux - 如何在linux中检查 'if-then-else-fi'中的多个字符串?

shell 中的 java 类路径

java - 如何在 Java 中按字母顺序对枚举成员进行排序?

linux - 读取文件的 Bash 脚本

mongodb - MongoDB如何对每组内max对应的文档进行分组和选取?