
arn:aws:sns:us-west-2:596873354795:demo
コマンドを使用してファイルから次の内容をインポートする必要がありますsed
。順序は何ですか?
サンプルファイル:
{
"TopicArn": "arn:aws:sns:us-west-2:596873354795:demo"
}
答え1
サンプルファイルは次のような構造化形式になっています。JSON。sed
これらのファイルを操作するのに便利なツールではありません。代わりに、次のJSON形式パーサーをインストールしてください。jq
。
Debian シリーズ Linux にインストールするには:
sudo apt-get install jq
Red Hat シリーズ Linux にインストールするには:
sudo yum install jq
他のディストリビューションやプラットフォームについては確認してください。このページ。
次に、次を実行します。
cat sample_file | jq -r '.["TopicArn"]'
取得するには:
arn:aws:sns:us-west-2:596873354795:demo
チェックしているケースjqマニュアルより複雑なファイルを検索するために使用されます。
答え2
sed、grep、awkなどの行ベースのツールに慣れていて、単にキーと値のペアを抽出したい場合は、使用する方がjsonpipe
良いかもしれませんjq
。
/
デフォルトでは、キーはタブで値から区切られた別々のパスとして印刷されます。
例えば
$ json='{"TopicArn": "arn:aws:sns:us-west-2:596873354795:demo"}'
$ echo "$json" | jsonpipe
/ {}
/TopicArn "arn:aws:sns:us-west-2:596873354795:demo"
$ echo "$json" | jsonpipe | awk -F'\t' '$1 == "/TopicArn" {print $2}'
"arn:aws:sns:us-west-2:596873354795:demo"
Debian パッケージの詳細:
パッケージ: python-jsonpipe
Description-ja: JSONをUNIXに適した行ベースの形式に変換
jsonpipeはJSONオブジェクトを反復処理し、grep、sed、awk、cut、diffなど、お気に入りのすべてのUNIXツールで処理できる単純な行ベースのテキスト形式を生成します。プログラミング言語でも便利です。実際、もともとは、使用中の特定の構造にテストを密接に結びつけることなく、JSON出力に対して簡単なテストアサーションを作成する方法として設計されました。