条件付きでファイルから1行削除

条件付きでファイルから1行削除

次のファイルから:

549.432086168
0.0000E+00 9.6988e-04 2.0580E-02
1.0000E+01 9.6988e-04 2.0580E-02
2.0000E+01 9.6988e-04 2.0580E-02
.
.
.
5.6000E+02 7.0997e-06 -3.7538E-04

最初の行の最初の列の数値と最後の行の数値の差が10より大きい場合は、最後の行を削除します。したがって、この場合、最後の行は560 - 549.43208616810より大きいため削除されます。

これを効率的に行う方法に関する提案はありますか?

ベストアンサー1

一般的なタスクawk

awk 'NR == 1 {first = $1}; $1 - first <= 10' < file

または、最後の行に対して次のことを行います。

awk 'NR == 1 {first = last = $0; next}
     {print last; last = $0}
     END {if (NR && last - first <= 10) print last}' < file

おすすめ記事