比较awk中的连续行

时间:2012-12-08 21:15:46

标签: awk compare

我想使用awk命令比较文件中的连续行。以下是输入和输出的示例。

输入文件

6    
7    
8    
9    
10    
4    
5    
6

我想要的输出文件是这样的:

6
7
8
9
10 
14 
15 
16  

基本上我想比较当前行是否大于前一行并继续打印前一行和当前行。只要当前行小于前一行,就为每个后续行添加一个值(10)。

3 个答案:

答案 0 :(得分:4)

根据评论中的请求进行了更新

awk '{if ($1<prev) {offset++}; print ($1+(offset*10)); prev=$1}' input_file

现在,每次从连续行之间的较大数字变为较小数字时,增量偏移量将增加10。

答案 1 :(得分:2)

awk '$0<p{$0+=10} {p=$0} 1' file

答案 2 :(得分:1)

您必须将先前值保存在变量中并与之比较:

awk '{ if ($0 < old) { $0 += 10; } print; old = $0; }'