.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
단락 모드를 사용하여 입력 파일을 "빈 줄"(두 개의 연속 줄)로 구분된 레코드로 분할합니다 \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