在unix的第一行中再添加一列

时间:2014-05-15 18:51:40

标签: unix awk

我的格式为

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工具插入列'常量'?

3 个答案:

答案 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