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 に答える