sun's longitude:241 52 4.26 
· 자유게시판 · 묻고답하기 · 알파문서 · RPMS list
· 사용자문서 · 팁/FAQ모음 · 리눅스Links · 자료실
· 서버정보 · 운영자 · Books/FAQ · FreeBSD
/board/read.php:소스보기  

질문과 답변 게시판입니다.

현재 실시간으로 이곳 서버의 설정파일(몇개)를 보여주고 있습니다.
서버의 설정내용에 관한 질문은 먼저 이곳 서버의 설정내용을 참고하시길 바랍니다.

[*** 쓰기 금지단어 패턴 ***]
글 본문 중간에 업로드할 이미지를 추가하는 방법 : @@이미지이름@@
ex) @@foo.gif@@
1787 번 글의 답장글: Re: grep, sed, awk.... 노가다에서 벗어나고 싶어요..
글쓴이: 산이 [홈페이지] 글쓴날: 2003년 11월 25일 01:03:55 화(새벽) 조회: 625

[내인생의 태클]님이 남기신 글:

>-----------------------------------------
>답변자가 기본적으로 참고할 내용입니다.
>- 배포판(옵션)    : 레드햇계열
>- 커널버전(옵션)
  : 2.4.XX
>- 데몬버전(예:apache
 1.3.27) : Apache 1.3.28
>- 데몬설치유형(RPM/컴파일/기타)
 : bash....
>-----------------------------------------
>
>안녕하세요.
>적수네에서 검색하다 우연히 이곳을 알았습니다.
>php로 사이트를 만들고 있는중인데요...

>아시다시피 루트문서아래에
 여러 디렉토리가 있잖아요...
>
>가령 /usr/local/apache/htdocs/board   <-- php 문서들이
있습니다.
>
>$include_path="/usr/local/apache/htdocs/";
>이것을
>$include_path="/home/aaa/public_html/";
>이걸로 바꿔줘야 하거든요....
>
>참고로 루트아래 스크립트의 갯수가 대략 7~80개 정도
됩니다.
>모든 스크립트에 위의 변수가 있습니다.
>그 많은 스크립트들을 일일이 바꾸는건 끔찍합니다.
>왜냐하면 자주 바꿔주어야 하거든요...
>
>제 나름대로 생각해본게 grep이나 sed를 사용해서 쉘스크립트로
만들어 볼까했는데 막상 만들어볼려고하니
 기초지식이 너무 없네요.
>조언 부탁드립니다. 

========================================

조건이 *.php 파일이고
바꿀 문자열이 /usr/local/apache/htdocs/ --> /home/aaa/public_html/
이라면 비교적 쉽습니다.

현재 바꿀 *.php 파일이 있는 디렉토리중에서
 상위의 디렉토리로
이동합니다.

바꾸기 전에 디렉토리를 통째로 백업해 놓은것이 좋겠지요...?

$ pwd
/any/path/to/docroot
$ cp -a /any/path/to/docroot /tmp/

그리고

$ find . -name "*.php" -type f | xargs grep '$include_path'

이렇게 하면 바꿀 파일과 그 내용이 출력됩니다.

이것은

$ find . -name "*.php" -type f | xargs grep "\$include_path"

와 같습니다. ' 와 " 를 서로 구별해서 아무거나 하나
사용하면 됩니다.

이제는 진짜로 문자열을 바꾸어줘야 하는데

$include_path="/usr/local/apache/htdocs/";
$include_path  ="/usr/local/apache/htdocs/";
$include_path=  "/usr/local/apache/htdocs/";
$include_path = "/usr/local/apache/htdocs/";
$include_path='/usr/local/apache/htdocs/';

이렇게 각양각색으로 코딩되어 있다면 패턴일치가 조금 복잡해
집니다.

sed 의 패턴일치 정규표현식은 

's/$include_path\s*=\s*"\?\/usr\/local\/apache\/htdocs\/"\?/$include_path=
"\/home\/aaa\/public_html\/"/'

이렇게 복잡해 집니다.(한줄임)


현재 대상 파일이 80 개 정도로 그리 많지 않기 때문에
복잡하게 생각할 필요 없이 다음과 같이 쉘스크립트를 짜세요.

-----------------------------
#!/bin/sh

target_dir="/path/to"  ## php 파일이 있는 디렉토리 절대
경로지정
lists=$(find "$target_dir" -name "*.php" -type f)

## IFS 는 ' 에서 ENTER 키를 누르고 그 다음줄에 ' 가 옵니다.
IFS='
'

from_str='$include_path="/usr/local/apache/htdocs/"'  ## 기존 문자열
to_str='$include_path="/home/aaa/public_html/"'  ## 바꿀 문자열

for file in $lists ; do
  result=$(grep "$from_str" "$file")
  if [ X"$result" != "X" ] ; then
     sed "s;${from_str};${to_str};g "$file" > ${file}.newfile
     mv -f "${file}.newfile" "$file"
     echo "changed : $file"
  fi
done

exit 0
---------------------------

예전에 제가 많이 써 먹었던 방법입니다.
(테스트해 보시고 실행하세요...)

 
이전글 : grep, sed, awk.... 노가다에서 벗어나고 싶어요..
다음글 : Re: Re: grep, sed, awk.... 노가다에서 벗어나고 싶어요..  
 from 61.254.74.228
JS(Redhands)Board 0.4 +@

grep, sed, awk.... 노가다에서 벗어나고 싶어요.. Re: Re: grep, sed, awk.... 노가다에서 벗어나고 싶어요..
인쇄용 


apache lighttpd linuxchannel.net 
Copyright 1997-2024. linuxchannel.net. All rights reserved.

Page loading: 0.01(server) + (network) + (browser) seconds