Bashを使用してJsonファイルから単一の値を取得する正規表現

Bashを使用してJsonファイルから単一の値を取得する正規表現

以下のJSONファイルの内容から「tenki-deploy-topic」の値を検索したいと思います。私はこの正規表現を使用し、grep -o 'topic[^"]*' output.logそのテーマを含むすべてのファイルを取得しました。代わりに、「tenki」や「dense」などの他のキーを使用したいと思いました。

{ "Topics": [ { "Name": "arn:aws:sns:us-west-2:123456789012:topic-freezing-deploy" }, { "Name": "arn:aws:sns:us-west-2:123456789012:topic-dense-deploy" }, { "Name": "arn:aws:sns:us-west-2:123456789012:topic-tenki-deploy" } ] }

ベストアンサー1

awk一般的なLinux / Unix CLIツール(たとえばsed、&)を使用することは、JSONを解析するときにgrepほとんど常に間違ったアプローチです。

ターミナルでJSON CLIを操作するための一般的なgotoツールはjqすべてのリポジトリにあり、簡単にインストールできます。

Topics配列の要素のみを選択する方法に関する問題は簡単になります。

$ jq '.Topics[] | select(.Name | contains("topic-tenki-deploy"))' output.log 
{
  "Name": "arn:aws:sns:us-west-2:123456789012:topic-tenki-deploy"
}

上記の操作は、配列から要素を取得し、その値を含む要素を.Topics[]選択する方法で機能します。.Nametopic-tenki-deploy

引用する

おすすめ記事