특정 구성 파일에 대해 [default]로 시작하는 줄을 찾는 방법

특정 구성 파일에 대해 [default]로 시작하는 줄을 찾는 방법

.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

관련 정보