server {...}
특정 도메인을 포함하는 전체 블록을 내보낼 도구나 한 줄 또는 기타 항목이 필요합니다 .
몇 가지 예:
### 1)
cat conf.d/domains.conf
server {
include http.conf;
server_name example.com;
# [...]
}
server {
include https.conf;
server_name foo.com;
# [...]
}
server {
include https.conf;
server_name example.com;
# [...]
}
---
./script conf.d/domains.conf example.com
server {
include http.conf;
server_name example.com;
# [...]
}
server {
include https.conf;
server_name example.com;
# [...]
}
### 2)
cat conf.d/domains.conf
server {
include ssl.conf;
server_name example-foo.com;
# [...]
}
server {
include ssl.conf;
server_name example-bar.com
example.com
fake.domain.com;
location / {
return 204 "OK";
}
# [...]
}
server {
# include headers.conf;
include ssl.conf;
server_name example-baz.com example.com;
# [...]
}
server {
include ssl.conf;
root /var/www/;
server_name example-baz.com exampleee.com;
# [...]
}
---
./script conf.d/domains.conf example.com
server {
include ssl.conf;
server_name example-bar.com
example.com;
# [...]
}
server {
include ssl.conf;
server_name example-bar.com
example.com
fake.domain.com;
location / {
return 204 "OK";
}
# [...]
}
server {
# include headers.conf;
include ssl.conf;
server_name example-baz.com example.com;
# [...]
}
내 구성에는 많은 줄이 있으며 많은 외부 파일로 분할됩니다.
이를 수행하는 도구를 알고 있습니까? 아니면 제안사항이 있나요?
감사해요!
답변1
awk를 사용하면 케이스 도메인과 중괄호 '$domain {'에서 구분 기호 사이의 두 패턴을 필터링하여 이를 달성할 수 있습니다.
예를 들어:
awk '/exampledomain {/,/}/' exampledomains.conf
이 명령은 첫 번째 구분 기호를 사용합니다.
예시 도메인 {
두 번째 구분 기호인 오른쪽 중괄호는 다음과 같습니다.
}
그리고 도메인 줄을 포함한 내용을 선택한 파일에 인쇄합니다(이 예에서는 exampledomains.conf).
이것이 제대로 작동하려면 공백을 포함하여 입력이 텍스트여야 한다는 점을 고려하세요.