###前提・実現したいこと
現在、AWS S3から取得されるjson形式のデータの一部で、
StringではなくArray型になっているため、
スクリプトの処理がエラーになっているようです。
※cronで定期的にデータ取得をさせているのですが、エラーになっているデータがいまだに見つかっていない為、サンプルがありません...
※エラーメッセージの内容に関しては、別の質問(https://teratail.com/questions/28988)で質問させていただいており、回答をいただきました。
手動でデータをチェックして、削除・修正していられない(そもそもファイルが多くて見つかっていない)ので、
スクリプトで型をチェックして、処理をできないかと考えています。
json形式のデータで、型をチェックする方法はあるのでしょうか。
###発生している問題・エラーメッセージ
jq: error: Cannot iterate over string
jq: error: string and array cannot be sorted, as they are not both arrays
eventTime の部分でソートしようとしているので、eventTimeにArray型のデータが混ざっているのではないかと考えています。 ###ソースコード ```bash find /var/log/trail-log/ -name "*.json.gz" | sort | xargs gunzip -c | /usr/bin/jq '.[] | sort_by(.eventTime) | .[]' | /usr/bin/jq '{awsRegion, eventName, eventTime, userName: .userIdentity.userName, requestParameters}' | /usr/bin/jq '"[\(.eventTime)] \(.awsRegion) \(.userName) \(.eventName) \(.requestParameters)"' > trail.log ``` ###補足情報(言語/FW/ツール等のバージョンなど) ※cronで定期的にデータ取得をさせているのですが、エラーになっているデータがいまだに見つかっていない為、サンプルがありません...

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/08 09:41
2016/03/09 02:00
2016/03/14 01:22