2017-01-11 9 views
2

私はjqを使っていくつかのログを解析していますが、いくつかのログ行はさまざまな理由で解析できません。 jqにこれらの行を無視させる方法はありますか?私は解決策を見つけることができないようです。私はいくつかの人に推薦された--seq引数を使用しようとしましたが、--seqはファイル内のすべての行を無視します。あなたはJQがJSONとして各行を解析しようとするために、あなたのフィルターにfromjson? |を付加することができた後、各ログエントリは正確に一つのラインである、あなたは未解析のラインを残すためにJQを伝えるために-R--raw-inputオプションを使用することができると仮定するとjqを使用して解析できないJSONを無視する

+1

問題は、解析できない個々の行に関する問題ではありません。それは、問題のある行を無視するかバイパスすることです。ただ "123"という行を想像してみてください。 – Brandon

答えて

7

その誤りを捨てる。

+0

ああ、それは面白いです。私はそのショットを与えるでしょう。ありがとう! – Brandon

+0

Worked!どうもありがとう! – Brandon

+0

それも私のために働いた! –

1

あり、「無効なJSON」の話題を扱うFAQ page上など、いくつかのQ &がありますが、具体的にはQを参照してください。

は、それがエラーをヒットした後、JQは続ける持ってする方法はあります入力ファイルに?

特に、これは--seqの使用方法を示しています。

しかし、あなたが与えた疎な詳細(SO recommends)では、単にinputsを使う方が良いかもしれないようです。このアイデアは、「try/catch」を使用して、一度に1つのJSONエンティティを処理することです。

def handle: inputs | [., "length is \(length)"] ; 
def process: try handle catch ("Failed", process) ; 
process 

jqを呼び出すときに-nオプションを使用することを忘れないでください。

Processing not-quite-valid JSONも参照してください。

関連する問題