Skip to Content
Go Back
안형우

안녕하세요. 14년차 풀스택 웹개발자 안형우입니다. 이 블로그에서는 WordPress, PHP, CSS, 사용성, 리눅스 서버 등 풀스택 웹개발에서 마주하는 다양한 문제 상황과 해결책, 필요한 개념들을 다룹니다. 👉 소개


작업물

📌 워드프레스, 답답한 빌더와 플러그인 대신 시원하게 커스터마징하기(강의) 2023-01-15
📌 아무도 말하지 않는 PHP의 좋은 점 2018-10-13
📌 유지보수하기 쉬운 CSS 전략(슬라이드) 2016-12-20
📌 워드프레스 테마에서 템플릿 파일 매칭 순서 2013-05-12

[sed] 터미널에서 텍스트 파일 문자열 바로 치환하기

워드프레스 사이트를 개발할 때 로컬에 사이트를 구축하기 위해서는 늘 DB를 다운받아서 에디트플러스로 열어서 Ctrl+H로 도메인을 찾기바꾸기 했다. site.comsite.local로 변경했던 것이다. 그런데 이게 DB 용량이 크면 골때린다. 게다가 에디트플러스는 윈도우용이기 때문에 리눅스를 사용하고부터는 대용량 파일의 문자열을 치환하는 게 늘 골치가 아팠다. … 커맨드라인 명령어를 알기 전까지는 말이다! ㅋㅋㅋ

sed는 커맨드라인에서 문자열을 정규식으로 찾아서 치환해 주는 놈이다. 정규식은 펄 스타일을 사용한다. 즉, 대충 다들 쓰는 거 쓰면 된다.

예컨대, mytory.network.local/mytory.net/html로 변경하고 싶다면 아래처럼 쓴다.

sed 's/mytory.net/work.local/mytory.net/html/g' 2014-04-03.sql > 2014-04-03-replaced.sql

위처럼 명령을 내리면 2014-04-03.sql이라는 파일의 문자열이 치환돼 2014-04-03-replaced.sql이라는 파일이 생긴다.

-i 옵션을 주면 >가 필요 없다. 표준출력(StdOut, Standard Output)을 자기 원래 파일로 보내게 된다. 즉, 그냥 원본 파일을 수정해 버린다. 난 간이 작아서 그렇겐 못하겠다.

문법을 설명하면 이렇다.

sed 's/찾을정규식/바꿀문자열/g'

s는 문자열을 치환하겠다는 표시(flag)고, g는 자바스크립트에서 replace 함수 사용해 본 사람이라면 알겠지만, 첫 번째 것만 바꾸는 게 아니라 전체를 다 바꾼다는 표시다. 즉, global의 약자라고 생각하면 된다. 바꿀문자열 쪽에서는 구분자로 쓴 /만 이스케이핑해 주면 된다. 구분자는 /뿐 아니라 |도 사용할 수 있다. 즉, 아래처럼 쓸 수 있다.

sed 's|찾을정규식|바꿀문자열|g'

뭐, 나머지는 각자들 알아서 테스트해 보시길 바란다.

안녕하세요. 14년차 풀스택 웹개발자 안형우입니다. 이 블로그에서는 WordPress, PHP, CSS, 사용성, 리눅스 서버 등 풀스택 웹개발에서 마주하는 다양한 문제 상황과 해결책, 필요한 개념들을 다룹니다. 👉 소개


작업물

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다