OS/LINUX

15. 문자열 검색 / 치환

by coldplayer83 2026. 6. 12.
728x90
반응형

vi 문자열 치환

sed -i 's/기존문자/바꿀문자/g' 파일명

ex) sed -i 's/aaa/bbb/g' *.sh

 

vi 경로 치환

sed -i 's|기존경로|바꿀경로|g' 파일명

ex) sed -i 's|/test/direcroty|/change/directory|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 pattern이 있는 모든 행을 선택하고 선택된 행에서 pattern을 new로 교체. 한 행에 여러개 있으면 모두 교체

 

 


 

파일 내 문자열 검색 (find)

https://webdir.tistory.com/155

 

리눅스 find - 파일 검색

터미널과 같은 TUI모드에서 검색을 실행하는 건 여간 까다로운게 아닙니다. 쉽게 검색창에 검색어 넣으면 "짠~" 하고 보여주는 게 얼마나 고마운지 깨닭게 되죠^^; 아래에서 검색하는 방법에 대하

webdir.tistory.com

 

형식)

find 검색할 디렉토리 -name "*" | xargs grep 검색할 내용
ex) find ./ -name "*.sh" | xargs grep "mvtest"

 

사용 예제)

# 용량이 0인 빈 파일 검색
find / -empty -exec ls -l {} \;

# 특정 소유자의 파일 찾기
find / -uid 500 -exec ls -l {} \;

# 특정 사용자의 소유파일들 검색
find / -user jboss -print

※ -print는 검색 결과를 파일의 절대경로로 표시. exec ls -l \; 는 ls -l과 같은 형식으로 표시

 

파일 내 문자열 치환

바꿀 파일들이 있는 특정 디렉토리에서 실행

 

형식)

(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" {} \;
find ./ -name "*.sh" -exec perl -p -i -e 's/OLDSTRING/NEWSTRING/g' {} \;

※ s/sw\/was\/weblogic\/12.2.1.4\/wlserver\/sw\/mvtest\/12.2.1.4\/wlserver/g
위의 예시에서는 \로 경로에 있는 /를 문자로 인식하도록 해준 것임.

 

옵션)

exec : 앞선 명령어의 결과를 입력으로 받아 \; 라는 표기자를 만날때까지 읽고 실행. 즉, exec 커맨드의 끝을 ; 으로 표기해줘야 함

+ : 인자를 연속으로 입력해서 커맨드 한번으로 실행하게 해줌

{} : 찾은 파일들에 하나씩 대입됨을 의미

ex) /home/test 하위 파일 중 크기가 5MB 이상인 파일의 출력을 인자로 하여 chmod 명령어를 실행
$ find /home/test -type f -size +5M -exec chmod 755 {} +

 

xargs(eXtended ARGumentS) : exec 커맨드의 + 옵션과 유사. 앞선 명령어의 결과를 입력받아 인자를 연속으로 나열하여 커맨드 실행

https://lascrea.tistory.com/62

 

Linux xargs

기본적인 명령어 뒤에 파이프로 추가하여 사용파이프 이전에 명령을 인자로 받아 명령어를 실행하는 구조 xargs [옵션] 명령어 옵션- a : 표준 입력 대신 파일에서 항목을 읽음, 이 옵션을 사용하

lascrea.tistory.com

 

find + xargs 예와 find 명령에서 -exec를 조합한 차이점?

=> find의 경우 -exec 라는 인자를 줄 수 있기 때문에 굳이 xargs를 사용할 필요가 없음

하지만 find 외의 명령어, ex. ls의 경우는 xargs가 필요

ex) ls f* | xargs cat

contents of f1 ...

contents of f2 ...

contents of f3 ...

 

sed (Stremlined EDitor) : 치환, 삭제, 삽입과 같은 기능을 사용할 때 사용하는 명령어

-i : 작성하면 출력되지 않고 바로 파일에 적용되고, 생략하면 치환된 결과가 cat을 사용한 것처럼 출력됨

-g : 작성하면 모든 문자열에 적용되고, 생략하면 첫 번째 하나만 바뀜

 

perl : 복잡한 정규 표현식(PCRE)가 필요하거나, 여러 줄에 걸친 텍스트 패턴 매칭, 대용량 파일 처리시 사용

- \Q  : 패턴 내에 \Q를 쓰면 그 뒤에 오는 모든 정규표현식 메타문자를 일반 문자(리터럴)로 취급하도록 강제

해제는 \E를 만나거나 패턴이 끝날 때까지 유효

. * + [ ] ( ) \ 등의 기호를 이스케이프(\) 처리 없이 그대로 검색할 수 있음

 

728x90
반응형

'OS > LINUX' 카테고리의 다른 글

17. awk  (0) 2026.06.29
16. 네트워크 명령어  (0) 2026.06.22
14. 권한  (0) 2026.06.11
13. history 명령어 시간 출력하기  (0) 2026.05.15
12. 다중 사용자와 슈퍼유저  (0) 2026.04.23

TOP

Designed by 티스토리