2016-03-31 14 views
2

私は使用しているコマンドラインプログラムをコンソールに記録しています。しかし、いくつかのバギーファームウェアには、それは1秒ごとに特定のエラーを出力します。grepを使用したフィルタコマンド出力

grepを使用して出力をフィルタリングすると、この特定のエラーラインがコンソールに記録されないようにするにはどうすればよいですか?

私はを取り除きたい正確なエラーは次のとおりです。

[1] [NTC] [NET] netcam_read_html_jpeg: Potential split boundary - 1447 chars flushed, 1 re-positioned 

ので、同様に、私は、それで問題のある行でshスクリプトを作成する場合:

#!/bin/sh 

echo "[1] [NTC] [NET] netcam_read_html_jpeg: Potential split boundary - 1447 chars flushed, 1 re-positioned" 
echo "testing" 

そして、それを実行し、予想通り、私はそれをtにgrep -vを使用して実行した場合の出力は、今、

[1] [NTC] [NET] netcam_read_html_jpeg: Potential split boundary - 1447 chars flushed, 1 re-positioned 
testing 

ですこの行を省略するryは、そのよう:

./script.sh | grep -v "[1] [NTC] [NET] netcam_read_html_jpeg: Potential split boundary - 1447 chars flushed, 1 re-positioned" 

出力はまだです:

私は同じスクリプトを実行する場合は、は、この時間は testingを含む行を取り除くしようとして
[1] [NTC] [NET] netcam_read_html_jpeg: Potential split boundary - 1447 chars flushed, 1 re-positioned 
testing 

、そうのような:

./script.sh | grep -v "testing" 

そして出力が、期待されるとおり

[1] [NTC] [NET] netcam_read_html_jpeg: Potential split boundary - 1447 chars flushed, 1 re-positioned 

今ここで間違って何?明らかに、私は右のコマンドを使用しています。これは2番目の例で動作するためです。それは私が望む実際の行を省略するようには機能しません!

私には何が欠けていますか?

+0

https://stackoverflow.com/help/how-to-askをお読みください。また、自分で行った試行を表示してください。あなたは尋ねる前にいくつかの試行をしたと思われます。 –

+0

@EtanReisner - 更新された質問 –

+0

大括弧は正規表現のメタキャラクタです。彼らは文字クラスを意味する。彼らは通常の文字として一致しません。 ( '\\'で)エスケープしたり、固定パターン( '' fgrep'や '' grep'への '-F'フラグ)を使うようにgrepに伝える必要があります。 –

答えて

2

私はそれを得ました!

コンソールに印刷している行がstderrで送られていたので、grepは何も見ていませんでした。

私はそれを動作させるために走ったコマンドがした

sudo motion 2> >(grep -v "\[1\] \[NTC\] \[NET\] netcam_read_html_jpeg: Potential split boundary - 1447 chars flushed, 1 re-positioned" 1>&2) 
+0

それは一つの解決策です。 'sudo motion 2>&1 | grep ... 'も機能しました(移植性の低いプロセス置換を必要とせずに)。 –

関連する問題