3

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

输入文件

6    
7    
8    
9    
10    
4    
5    
6

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

6
7
8
9
10 
14 
15 
16  

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

4

3 回答 3

5

根据评论中的要求更新

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

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

于 2012-12-08T21:24:11.413 回答
3
awk '$0<p{$0+=10} {p=$0} 1' file
于 2012-12-08T21:44:28.463 回答
1

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

awk '{ if ($0 < old) { $0 += 10; } print; old = $0; }'
于 2012-12-08T21:24:52.420 回答