.aws/config
.aws/credentials
特定の設定ファイル(たとえば、[default]
または)またはファイルの行を解析しようとしています[prod]
。
ファイルの例
[default]
region = us-east-1
output = json
[nonprod]
region = us-east-1
output = json
[uat]
region = us-east-2
output = json
[prod]
region = us-east-1
output = json
[default]
次の設定ファイルの先頭までまたは[prod]
ファイルの最後まで検索が開始された場合は、次の行を検索(および表示)する(aws、sed、grepなど)スクリプトを持つ人がいますか?
はい
searchawsconfig default
searchawsconfig prod
答え1
設定ファイルがスペースで区切られている場合は、awkを使用できます。短絡モード前任者。
$ awk -v RS= -v p='[uat]' '$1 == p' yourfile
[uat]
region = us-east-2
output = json
答え2
Perlの「短絡モード」:
$ perl -00 -ne 'print if /\[default\]/' file
[default]
region = us-east-1
output = json
または
$ perl -00 -ne 'print if /\[prod\]/' file
[prod]
region = us-east-1
output = json
~/.bashrc
たとえば、シェルの初期化ファイルに次の行を追加してシェル関数に切り替えることができます。
searchawsconfig(){
perl -00 -ne 'print if /\['"$1"'\]/' "$2"
}
これにより、次のことができます。
$ searchawsconfig prod file
[prod]
region = us-east-1
output = json
答え3
抽象的な:
awk '$1==p' RS= p='[default]' ./tst
段落モードを使用して、入力ファイルを「空行」(2つの連続行)で区切られたレコードに分割します\n
。
正規表現のマッチングを実行できます(正規表現[]
では特別なのでエスケープ)(^
行の先頭を表示するために使用されます)。
awk -vRS='' '/^\[default\]/' ./tst
または、テキストマッチングを実行できます(全体最初ライン):
awk -vRS='' '$1 == "[default]"' ./tst
または(より柔軟に)コマンドラインで設定された変数を使用します。
awk '$1==p' RS= p='[default]' ./tst
../
=
または環境変数を使用します。
RS='' SECTION='default' \
awk 'BEGIN{RS=ENVIRON["RS"]} $1=="[" ENVIRON["SECTION"] "]" ' \
./tst