2009-12-29 2 views
0

예제를 사용하여 상황을 설명해 보겠습니다.정규식이있는 시퀀스를 찾은 다음 두 번째 또는 다음 행을 찾으십시오.

문서 루트를 변경해야하는 httpd.conf 파일을 고려하십시오. 그래서 먼저 ServerName을 찾은 다음 문서 루트를 변경해야합니다. 그래서 저는 여기에 두 개의 정규 표현식이 필요하다고 생각하지만 어떻게해야할지 모르겠습니다. 누군가 도움을 줄 수 있습니까? 아니면 ServerName을 찾아서 메모를 작성해야합니까? 줄 번호의 다음 스크립트를 사용하여 DocumentRoot를 찾는 진행? 감사.

+0

DocumentRoot는 항상 ServerName 뒤에 있습니까? 문법은 DocumentRoot와 ServerName이 동일한 VirtualHost sblock에있는 한 임의의 순서로 지정되도록합니다. –

+0

네, 맞습니다만 제 경우에는 ServerName이 항상 먼저옵니다. – mike

답변

0

잘 모르겠지만, 아마도 이와 비슷한 것이 효과가있을 것입니다.

cat /etc/apache2/http.conf | sed 's/.*ServerName=.*/ServerName=YourNewLocation/' > tmp 
mv tmp /etc/apache2/http.conf 
+0

죄송합니다. 귀하의 질문을 신중하게 읽지 않았습니다 ... 내 대답이 도움이되지 않습니다 – kokosing

0

내가 먼저 서버 이름을 검색해야하는 이유 잘 모르겠지만, 여기 당신이

awk '/^DocumentRoot/{$0="DocumentRoot /new/root" } {print}' /path/httpd.conf > temp 
mv temp /path/httpd.conf 

DocumentRoot를 변경하는 방법입니다 또는 당신은 당신의 새로운 루트를 만들 서버 이름 값을 활용하는 경우,

awk '$1~/ServerName/{servername=$2} 
/^DocumentRoot/{ 
$0="DocumentRoot "servername # create your new root here. 
} 
{print} 
' /path/httpd.conf > temp 
mv temp /path/httpd.conf 
+0

귀하의 버전은 구성 파일에있는 모든 DocumentRoot를 변경합니다. 이것이 ServerName을 사용하여 가상 호스트 항목을 찾고 DocumentRoot를 변경해야하는 이유입니다. 답장을 보내 주셔서 감사합니다. – mike

관련 문제