1

データを記録している約 10 列の .csv ファイルがあります。私はこのようなものを使いたい:

bashスクリプトでファイルの最初の行を取得するには?

各ファイルの最初の行を取得してからログを処理する場所。ただし、行が処理されたら、処理済みとしてマークしたいと思います (最後に *** などで新しい列を追加するのと同じくらい簡単です)。基本的には、未処理の最初の行を取得して処理し、次の未処理の行に移動するなどの処理を行います。

sed、awk、grep、および/またはその他の標準を使用してこれを行う必要があります。bash スクリプトは、無限 while ループのバックグラウンドで実行されます。基本的に、このログ ファイルをリアルタイムで読み取って処理しようとしていますが、履歴用のログが必要です。

編集: また、ファイルで読み取られた行をマークするためにこれが必要です。そうすれば、サーバーが停止した場合に、どこで処理を開始するかを正しく知ることができます。そのため、それを行う方法を理解できれば、テールは機能します。

ありがとう!

4

1 に答える 1

2

無限ループに陥るのではなく、次のようにすることができます。

tail -n +1 -f your_log_file | some_processing_pipeline

これにより、ログファイルの 1 行目から読み取りが開始され、新しい行が表示されるのを継続的に待ち、それらが に渡されsome_processing_pipelineます。

于 2012-08-20T13:59:51.483 に答える