我有一个包含产品列表的文件。每条线看起来像这样:产品 - 个人电脑 - 价格。我想按个人电脑价格值排序。
答案 0 :(得分:0)
使用awk
和sort
的组合可以做您想做的事。
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
。