2016-11-09 21 views
0

を使用してデコードファイルから連続し、印刷パターンを復号化されて、私はASCII形式のファイルからASCII形式 にバイナリログをデコードするコマンドは、私がAWKを使用して、いくつかのpattersをgrepし、それらに実行awkはawkの

を印刷する必要がありますこれはどうすればできますか?

私が試したことは以下のようなシェルスクリプトであり、動作しません。

コマンド> file.txt | awk /パターン/ | SED /パターン/

はまた、私は継続的にデコードファイルへのコマンドを必要と

+0

'...> file.txt | awk ... 'エラーです。あなたは' cmd'の出力をファイルにリダイレクトしましたが、 '|'にリダイレクトすることはできません。本当に 'file.txt'が必要なのかどうかは言いません。だから、最も簡単なのは 'cmd |デコード| awk ... 'awkは' sed'ができる何でもできるのです。一度使用する場合は、sedの追加を続けます。数年間生産される予定のものについては、 'awk'で必要な置換をどのようにしてプロセスを保存するかを理解してください。がんばろう。 – shellter

+0

また、このQは非常に曖昧です。読者は、再現可能な症例と証拠を期待しています。 http://stackoverflow.com/help/mcveを読んで、サンプルの入力、予想される出力、実際のコード、現在の出力、エラーのメッセージ、問題のある箇所に関するコメントを含めてください。がんばろう。 – shellter

答えて

1

コマンド継続的にデコードファイルに事前に

おかげで更新されたファイルに印刷パターンを維持しておく印刷パターン

最初の質問はどのくらい正確に自体が現れているかです。ほとんどのログファイルは、ここに、未知の外部プロセスによって追加されることで成長し、定期的にローテーションされます。継続的にデコードする場合は、ログのローテーションを追跡する必要があります。

commandを連続してデコードするか、またはcommandを定期的に再実行する予定ですか?後者の場合は、代わりにいくつかのバリエーションみてください。それができない場合は、あなたがどこ各反復の終了を記録する必要があります

cat log | command | awk 

を、のようなもの:

touch pos 
while -f pos 
do 
    command | awk -v status=pos script.awk > output || rm pos 
done 

script.awkNRまでの入力をposファイル内の数値の値にスキップします。次に、EOFまで行を処理し、posをその最後のNRで上書きします。エラーが発生すると、exit 1が呼び出され、ファイルが削除され、ループが終了します。

sedを無視して、すべてのパターンマッチングロジックを1つのawkスクリプトに入れることをお勧めします。理解しやすく、安価に実行することができます。

+0

Jamesに感謝します。コマンドは継続的にデコードすることができます – user2074894

+0

私はこれを行う方法を考え出しました。私は無限ループの中でこのコマンドを実行するだけで十分です – user2074894