我的格式为
0 -1.6
1 country -3.2
2 city -2.1
所以我想按得分排序,即最后一列(-1.6,-3.2,-2.1)。标签实际上是0到100000之间的数字(我刚给出了样本0,1,2)但是,我不能直接使用sort命令,因为第一行没有标签。我想在那里插入标签'常数',然后按分数排序。如何使用awk或任何其他unix工具插入列'常量'?
答案 0 :(得分:2)
也许这就是:
awk 'NR==1 { print $1, "constant", $2; next } 1' file | sort -k3,3n
那应该在第一行的中间插入“constant”,并打印所有其他未经修改的行,然后将所有内容传递给sort
,这应该在第三个字段上进行数字排序。
答案 1 :(得分:1)
这样简单的事情怎么样?使用正则表达式检查col $ 2是否存在数字
awk '{if($2 ~ /[0-9]/)print $1,"CONSTANT",$2; else print $1,$2,$3}' file | sort -k3
答案 2 :(得分:-1)
这awk
可能会:
awk 'NR==1 {$1=$1 " constant"} 1' file | sort -k3
0 constant -1.6
2 city -2.1
1 country -3.2