티스토리 뷰

728x90
반응형

리눅스 쉘 스크립트 기초 sed 명령어와 옵션을 배워 보자~

sed 명령어는 많은 파일의 내용을 한꺼번에 변경할 때 그리고 리눅스 쉘 스크립트를 빠르게 처리할 때

많이 사용된다. 그리고 vi 편집기에서 사용되는 문장 변경 같은 sed 명령어 옵션도 거의 같다.

참고로 한 두 개의 항목을 수정할대는  sed를 사용하지 않고 그냥 직접 하자... 오타 나면 또다시 다 바꿔야 한다... 한 개로 끝날 문제를 크게 만드는 짓이 된다.

 

 

목차

sed 명령어 예제


리눅스 쉘 스크립트 sed 명령어  사용법

sed 명령의  사용법 들은 vi 편집기에서 사용되는 내용가 거의 비슷하다

예로 s/root/user1/g 처럼 root로 시작하는 문자를 user1로 바꾸어라 처럼 사용하게 되나.

특수 문자를 이용해서 활용하는 방법들을 보자

 


sed 명령어 한꺼번에 많은 파일 변경 하기

sed 명령어로 여러 파일을 내용을 동시에 수정(치환) 할 수 있다 
리눅스 쉘 스크립트 sed 명령어 옵션들을 활용 하는 방법은 아래와 같다.

$ find . -type -f -print0 | xargs -O sed -i 's/root/user1/g'
# 현재 디렉토리 파일들 의 내용중 root 문자를 user1 바꾼다.

$ find . -name "root*" | xargs sed -i '/^$/d'
# 빈줄을 모두 찾아서 한꺼번에 삭제 한다.

 

 

 


 

sed  사용 예제

리눅스 쉘 스크립트를  작성할 때 사용되는 vi 편집기에서 파일 내용을 수정할 때 편집 모드에서 10d를 누르면 라인 10에 내용을 삭제하게 된다.

이처럼 vi 편집기에 내용을 수정하는 방법에 익숙 하다면 sed 명령어 을 거의 안다고 할 수 있다.

 옵션과 몇 가지 예를 정리해보자

$ sed --help 
Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]...
sed '10d' /log  /log 파일에 10번 라인을 삭제 후 출력
sed '1,20' /og  /log 파일에 1 부터 20번 라인을 삭제 후 출력
sed '/^$/d' /log  /log 파일에 빈라인 을 모두 삭제 후 출력
sed '1,/^$/d' /log  /log 파일에 1라인 부터 처음 나타나는 빈라인 까지 삭제 후 출력
sed 's/*$//' /log /log 파일에 모든 줄에 나오는 빈 칸을 삭제 후 출력
sed 's/root/user1/' /log /log 파일에 각 줄에서 첫번째 root만 user1 로 바꾸어 출력
sed 's/root/user1/g' /log /log 파일에 각 줄에서 root를 모두 user1 로 바꾸어 출력 (s : substitute , g: global 을 뜻함)
sed -i 's/root/user1/g' /log /log 파일에 root 를 모두 user1 로 바꾸고 파일에 적용 한다 
sed -i 's/root/user1/g' /log > newlog /log 파일에 root 를 모두 user1 로 바꾸고  newlog 파일로 저장한다.

 

정리

예를 들은 내용을 보면 vi 편집기에서 파일을 수정할 때 사용하는 옵션을 그대로 사용한다는 걸 볼 수 있다. 

리눅스 쉘 스크립트를 사용하다 보면 파일 내용 수정 같은  반복 작업이 많을 때가 있는데

sed 옵션들을 꼭 알아 두면 너무 좋다~

 

내일은 리눅스 쉘 스크립트에서 역시나 자주 사용되는 awk 명령어를 알아보자~~~

728x90
반응형
댓글