比较awk中列中的值

时间:2015-04-30 13:34:09

标签: unix awk

如何比较一列中的值并在此之后执行某些操作?我想比较第一列的值和更改的时间插入一个零值的新行。为简单起见,我需要编写类似于我在MATLAB中编写的代码,在AWK中:

    for i=1:size(picks,1)-1
   if picks(i,1)~=picks(i+1,1)
     i
   end
end

输入:

631 4892    1.640   0.0090  6796
631 4941    1.646   0.0090  6796
636 2121    0.860   0.0950  7013
636 2162    0.872   0.0890  7013

输出:

631 4892    1.640   0.0090  6796
631 4941    1.646   0.0090  6796
631   9999    7013    0       0
636 2121    0.860   0.0950  7013
636 2162    0.872   0.0890  7013

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

这是将当前第一列与前一列进行比较的问题。如果它们不同,我们会使用前一个col1和0打印一个新行:

$ awk 'NR>1 && $1!=prev {print prev, 0} {prev=$1}1' file
631 4892    1.640   0.0090  6796
631 4941    1.646   0.0090  6796
631 0
636 2121    0.860   0.0950  7013
636 2162    0.872   0.0890  7013