コマンドの結果から「」内のテキストをエクスポートする方法

コマンドの結果から「」内のテキストをエクスポートする方法

以下を出力するコマンドを使用しました。 。

"Credentials": {
        "AccessKeyId": "ASIARKHY6",
        "SecretAccessKey": "FHM11kEwWZ",
        "SessionToken": "IQoJb3JpZ2luX2",
}

次に、次の3つのキーをそれぞれエクスポートする必要があります。私はこれを手動で実行していますが、スクリプトで書くのが好きです。

コマンドの結果をtmpファイルにパイプして使用できます。

cat tmpfile.tmp |grep  AccessKeyId 

出力: "SecretAccessKey": "FHM11kEwW6sP3Z"

それでは、2番目の「」セットを持つテキストだけをどのように選択できますか?これでエクスポートできます。

ベストアンサー1

プログラムの出力をファイルに保存したと仮定すると、次のように "AccessKeyId"キーを使用してtmpfile.tmpコマンドを使用して、特定のキーに特定の値を抽出できます。sed

key=AccessKeyId;
sed -n 's/^.*\"'$key'\":.*\"\(.*\)\".*$/\1/p' tmpfile.tmp

ASIARKHY6次のように一時ファイルを作成せずに、プログラムの出力をsedに直接パイプすることもできます。

key=AccessKeyId;
./program | sed -n 's/^.*\"'$key'\":.*\"\(.*\)\".*$/\1/p'

getval.sh上記の2つの形式のいずれかを次のようにスクリプト(と呼びます)に入れることをお勧めします。

#!/bin/bash
if [ $# -lt 3 ];then echo "usage: $0 <inputfile> <key>"; exit 0 ;fi
infile=$1
key=$2
sed -n 's/^.*\"'$key'\":.*\"\(.*\)\".*$/\1/p' $infile

実行可能にしたら、次のように実行できます。

./getval.sh tmpfile.tmp AccessKeyId

おすすめ記事