Linux SED 명령어 사용법
페이지 정보
본문
ed명령어와 grep명령어 기능의 일부를 합친 것이 sed(stream editor)명령어이다.
sed명령어도 grep명령어와 같은 필터이지만 이 명령어는 파일을 수정할 수 있게 하는 반면 ed처럼 대화식처리는 불가능하다.
sed명령어는 1개 라인씩 입력 라인을 읽어들여 표준출력으로 출력한다.
sed는 각 라인을 읽을 때마다 ed에서 사용하던 형식의 대치작업을 실행한다.
일치하는 문자열이 있으면 그 문자열을 대치한 후 출력하고 일치하는 문자열이 없으면 그 라인은 수정되지 않고 그대로 출력된다.
이 sed명령어가 ed보다 좋은 점은 라인들을 하나씩 읽고, 수정하고, 출력하기 때문에 기억장치 안의 버퍼를 사용하지 않는다는 것이다.
버퍼를 사용하지 않으면 파일의 크기에 제한 없이 작업을 할 수 있다.
ed와 같이 버퍼를 사용하는 경우는 버퍼의 크기보다 큰 파일은 처리할 수 없으며 대개 버퍼의 크기는 1MB정도이다.
따라서 sed는 아주 큰 파일을 처리할 때 주로 사용된다.
sed 명령어를 호출하는 형식은 grep명령어와 같지만 완전한 형식의 대치 연산자를 사용한다는 점만이 다르다.
1. 치환 substitute
sed 's/addrass/address/' list.txt : addrass를 address로 바꾼다. 단, 원본파일을 바꾸지 않고 표준출력만 한다.
sed 's/\t/\ /' list.txt : 탭문자를 엔터로 변환
2. 삭제 delete
sed '/TD/d' 1.html : TD 문자가 포함된 줄을 삭제하여 출력한다.
sed '/Src/!d' 1.html : Src 문자가 있는 줄만 지우지 않는다.
sed '1,2d' 1.html : 처음 1줄, 2줄을 지운다.
sed '/^$/d 1.html : 공백라인을 삭제하는 명령이다. (★★★)
3. 모든 공백 라인 제거
라인의 시작과 끝 사이에 아무것도 없는 라인과 부합한다.
이것은 공백 스페이스들로 된 라인과는 부합하지 않는바, 스페이스 자체가 문자이기 때문이다.
※ sed '/^ *$/d' --> space로 만들어진 공백까지 제거
(조심! ^와 *사이에 공백이 있어야 한다)
4. sed 명령어의 또다른 기능
sed명령어의 -f(file)선택자를 사용하면 명령어를 일일이 키보드에서 입력하지 않고 하나의 파일에 기억시켜 놓고 사용할 수도 있다.
# sed -f command.file in.file
여러 개의 명령어를 연속적으로 자주 사용할 때 이 명령어 파일이 유용하게 사용된다.
예를 들어 다음과 같은 복수 개의 명령어가 파일에 기억되어 있는 경우는
# vi command.file
s/hello/goodbye
s/good/bad
다음과 같은 명령어를 입력하면 다음과 같이 출력된다.
# echo "1234hello5678" | sed -f command.file
=> 1234badbye5678
참고자료
http://linuxstory1.tistory.com/entry/SED-명령어-사용법
sed명령어도 grep명령어와 같은 필터이지만 이 명령어는 파일을 수정할 수 있게 하는 반면 ed처럼 대화식처리는 불가능하다.
sed명령어는 1개 라인씩 입력 라인을 읽어들여 표준출력으로 출력한다.
sed는 각 라인을 읽을 때마다 ed에서 사용하던 형식의 대치작업을 실행한다.
일치하는 문자열이 있으면 그 문자열을 대치한 후 출력하고 일치하는 문자열이 없으면 그 라인은 수정되지 않고 그대로 출력된다.
이 sed명령어가 ed보다 좋은 점은 라인들을 하나씩 읽고, 수정하고, 출력하기 때문에 기억장치 안의 버퍼를 사용하지 않는다는 것이다.
버퍼를 사용하지 않으면 파일의 크기에 제한 없이 작업을 할 수 있다.
ed와 같이 버퍼를 사용하는 경우는 버퍼의 크기보다 큰 파일은 처리할 수 없으며 대개 버퍼의 크기는 1MB정도이다.
따라서 sed는 아주 큰 파일을 처리할 때 주로 사용된다.
sed 명령어를 호출하는 형식은 grep명령어와 같지만 완전한 형식의 대치 연산자를 사용한다는 점만이 다르다.
1. 치환 substitute
sed 's/addrass/address/' list.txt : addrass를 address로 바꾼다. 단, 원본파일을 바꾸지 않고 표준출력만 한다.
sed 's/\t/\ /' list.txt : 탭문자를 엔터로 변환
2. 삭제 delete
sed '/TD/d' 1.html : TD 문자가 포함된 줄을 삭제하여 출력한다.
sed '/Src/!d' 1.html : Src 문자가 있는 줄만 지우지 않는다.
sed '1,2d' 1.html : 처음 1줄, 2줄을 지운다.
sed '/^$/d 1.html : 공백라인을 삭제하는 명령이다. (★★★)
3. 모든 공백 라인 제거
라인의 시작과 끝 사이에 아무것도 없는 라인과 부합한다.
이것은 공백 스페이스들로 된 라인과는 부합하지 않는바, 스페이스 자체가 문자이기 때문이다.
※ sed '/^ *$/d' --> space로 만들어진 공백까지 제거
(조심! ^와 *사이에 공백이 있어야 한다)
4. sed 명령어의 또다른 기능
sed명령어의 -f(file)선택자를 사용하면 명령어를 일일이 키보드에서 입력하지 않고 하나의 파일에 기억시켜 놓고 사용할 수도 있다.
# sed -f command.file in.file
여러 개의 명령어를 연속적으로 자주 사용할 때 이 명령어 파일이 유용하게 사용된다.
예를 들어 다음과 같은 복수 개의 명령어가 파일에 기억되어 있는 경우는
# vi command.file
s/hello/goodbye
s/good/bad
다음과 같은 명령어를 입력하면 다음과 같이 출력된다.
# echo "1234hello5678" | sed -f command.file
=> 1234badbye5678
참고자료
http://linuxstory1.tistory.com/entry/SED-명령어-사용법
댓글목록
등록된 댓글이 없습니다.