我想使用awk命令比较文件中的连续行。以下是输入和输出的示例。
输入文件
6
7
8
9
10
4
5
6
我想要的输出文件是这样的:
6
7
8
9
10
14
15
16
基本上我想比较当前行是否大于前一行并继续打印前一行和当前行。只要当前行小于前一行,就为每个后续行添加一个值(10)。
答案 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; }'