100行のうち99行をスキップ

100行のうち99行をスキップ

多くのログテキスト出力を生成するbashコマンドパイプラインがあります。ただし、ほとんどの場合、前の行を繰り返すので、デフォルトの出力データはタイムスタンプといくつかのマイナーなフラグを除いて数時間に一度だけ変更されます。将来の処理/研究のために、この出力をテキストファイルとして保存する必要があります。各Xの最初の行だけを印刷するには、どのようにパイプする必要がありますか?

ベストアンサー1

最初の行を印刷し、N行ごとに次のN-1行をスキップします。

awk -v N=100 'NR%N==1' infile

テスト:

$ seq 1000 |awk -v N=100 'NR%N==1'
1
101
201
301
401
....

スキップしたい行数を渡すために、パラメータからその数を読み取ることもできます。

$ seq 1000 |awk -v Num=100 -v Skip=98 '(NR-1)%Num<Num-Skip'
1
2
101
102
201
202
301
302
401
402
501
502
601
602
701
702
801
802
901
902

おすすめ記事