0

次のようなファイルがあるとします。

Rowname  
useless number  
useless number  
1596 1787  
1595 1787  
1594 1787  
1565 1803  
1565 1804  

useless numberに基づいて awk 行 5 と 6 をスキップするように awk に指示する方法を知っていRownameます。しかし、前の行との差が 1 しかない場合、行をスキップするように awk に指示するにはどうすればよいですか? 出力は次のようになります。

1596 1787  
1565 1803

私の問題は、場合によってはこれが得られることです:

1595 1787  
1594 1787

別の言い方をすると、行名から 3 行目は常に必要ですが、行 3 との差が 1 (または 2 または 3) のみの場合、行 4 (または 5 または 6) は必要ありません。

それは理にかなっていますか?

4

2 に答える 2

0

これでいけるかもしれません

awk '#print line 4
     NR == 4;
     #print any line that meets the "sum" comparison condition
     NR > 4 && ($1 + $2 - prev_sum != -1) && ($1 + $2 - prev_sum != 1);
     #set the sum for this line into a variable
    {prev_sum=$1 + $2}' file.txt
于 2013-11-08T02:45:11.783 に答える