按第2和第3个字段的产品排序(Linux)

时间:2016-04-25 18:03:07

标签: linux shell sorting

我有一个包含产品列表的文件。每条线看起来像这样:产品 - 个人电脑 - 价格。我想按个人电脑价格值排序。

2 个答案:

答案 0 :(得分:0)

使用awksort的组合可以做您想做的事。

awk '{p = $2*$3; print p,$1,$2,$3}' your-file | sort -n

这将创造一个临时。名为p的变量,并将第2列和第3列的产品分配给它。

然后它将打印出该产品,然后打印出3个第一列。

之后,linux sort命令将完成剩下的工作。

答案 1 :(得分:0)

您应该考虑使用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