본문 바로가기

ETC

문자열 치환

728x90
#####파일 내 문자열 치환#####
sed -i 's/기존문자/바꿀문자/g' 파일
sed -i 's/aaa/bbb/g' *.sh
 
#####파일 내 경로 치환#####
sed -i 's|기존경로|바꿀경로|g' 파일
sed -i 's|/app/wildfly/wildfly_2611/bin/domain.sh|/sw/wildfly26/bin/domain.sh|g' *.sh
 
 
vi 치환 명령 요약
 :s/old/new
 현재 행의 처음 old를 new로 교체
 :s/old/new/g
 현재 행의 모든 old를 new로 교체
 :10, 20s/old/new/g
 10번째 행부터 20번째 행까지 모든 old를 new로 교체
 :-3, +4s/old/new/g
 현재 커서 위치에서 3행 위부터 4행 아래까지 
 
old를 new로 교체
 :%s/old/new/g
 문서 전체에서 old를 new로 교체
 :%s/old/new/gc
 문서 전체에서 old를 new로 확인하며 교체
 :g/pattern/s/old/new/g
 pattern이 있는 모든 행의 old를 new로 교체
 :g/pattern/s//new/g
 :%s/old/new/g와
 
 

 
파일 내 문자열 검색 https://lascrea.tistory.com/62
형식)
find 검색할 디렉토리 -name "*" | xargs grep 검색할 내용
ex)
find ./ -name "*.sh" | xargs grep "mvtest"
 
파일 내 문자열 치환
바꿀 파일들이 있는 특정 디렉토리에서 실행
형식)
(linux) find ./ -name "파일 이름" -exec sed -i 's/찾는 문자열/바꿀 문자열/g' {} \;
(unix) find ./ -name "파일 이름" -exec perl -pi -e  's/찾는 문자열/바꿀 문자열/g' {} \;
ex)
find ./ -name "*.sh" -exec sed -i "s/sw/was/weblogic/sw/mvtest/g" {} \;
 
위의 예시에서는 \로 경로에 있는 /를 문자로 인식하도록 해준 것임.
경로 길면 그냥 s/was/weblogic/mvtest/g 로 하는 방법도 있음.
 
옵션)
-exec : 앞선 명령어의 결과를 입력으로 받아 \; 라는 표기자를 만날때까지 읽고 실행. 즉, exec 커맨드의 끝을 ; 으로 표기해줘야 함
+ : 인자를 연속으로 입력해서 커맨드 한번으로 실행하게끔 해줌
ex) /home/test 하위 파일 중 크기가 5MB 이상인 파일의 출력을 인자로 하여 chmod 명령어를 실행.
    $ find /home/test -type f -size +5M -exec chmod 755 {} +
{} : 찾은 파일들에 하나씩 대입됨을 의미
 
xargs(eXtended ARGumentS) : exec 커맨드의 + 옵션과 유사. 앞선 명령어의 결과를 입력받아 인자를 연속으로 나열하여 커맨드 실행
 
sed (Stremlined EDitor) : 치환, 삭제, 삽입과 같은 기능을 사용할 때 사용하는 명령어
    -i : 작성하면 출력되지 않고 바로 파일에 적용되고, 생략하면 치환된 결과가 cat을 사용한 것처럼 출력됨 
    -g : 작성하면 모든 문자열에 적용되고, 생략하면 첫 번째 하나만 바뀜.
perl :
 
용량이 0인 비어있는 파일 검색
find / -empty -exec ls -l {} \;
특정 소유자의 파일 찾기
find / -uid 500 -exec ls -l {} \;
특정 사용자의 소유파일들 검색
find / -user nestgoer -print
ex) /sw/was/weblogic -> /sw/mvtest로 경로 변경
 
find ./ -name "*.sh" -exec sed -i "s/sw/was/weblogic/sw/mvtest/g" {} \;

'ETC' 카테고리의 다른 글

Forward Proxy & Reverse Proxy  (0) 2024.07.17
Session ID 분석  (0) 2023.08.24
[LINUX] 초기 설정으로 80포트 사용 시 나오는 에러  (0) 2021.06.23