-
sed [Stream Editor] ?
리눅스 명령어의 일종으로, stream editor라고 불린다. sed는 text를 변형하고 출력하는 텍스트 편집 도구이다.
- 활용도
sed 명령어는 다양한 활용이 가능한데, 예를 들어 다음과 같은 경우에 사용될 수 있다.
- 다수의 파일에서 특정 키워드를 다른 키워드로 일괄적으로 치환할 때
- 파일에서 특정 단어가 있는지 확인할 때 (해당파일을 열지않고 확인할 수 있음)
- 15가지 예제 코드
(1) 특정 n 라인 출력
리눅스 명령어 head와 tail을 사용하면 파일의 처음이나 마지막 줄을 확인할 수 있다.
거기서 나아가 sed는 파일을 중간 라인도 확인이 가능하다.
# sed -n '5, 10p' myfile.txt
// myfile.tx의 5~10라인을 출력
(2) 특정 n 라인을 제외한 출력
# sed '20,35d' myfile.txt
// 20~35라인을 제외하고 전부 출력
(3) 다수의 특정 라인 출력
# sed -n -e '5,7p' -e '10,13p' myfile.txt
// 5~7라인과 10~13라인을 출력
-n 옵션 : (sed는 보통 모든 행을 읽어오는데 ) n옵션을 주게되면, 그 뒤에 오는 숫자행부터 처리를 하게 된다.
-e 옵션 : 실행될 명령어에 스크립트를 추가한다. 즉, 명령어 앞에는 항상 붙여줘야한다.
(4) 단어 또는 문자 치환
# sed 's/[현재단어]/[미래단어]' <file nmae>
파일에서 [현재단어]를 모두 찾아서 [미래단어]로 치환한다.
# sed 's/version/story/g' myfile.txt
// myfile.txt 파일 내의 version 단어를 story로 변경
# sed 's/version/story/gi' myfile.txt
// gi 옵션 : 대소문자 구분없이 처리한다.
# ip route show | sed 's/ */ /g'
// '|' 문자는 리눅스에서 파이프라인을 의미한다.
// 보통 (1명령어) | (2명령어) 과 같은 구조로 사용되고, 명령어1을 먼저 실행 후, 명령어 2가 그 결과를 받아서 실행한다. ㅏ
// 특정 파일이 아닌 ip route show 명령어의 결과를 sed 명령어로 한 번 더 필터링한다.
// sed 's/ */ /g'
// 여러개의 빈 칸을 하나의 스페이스로 변경한다.
명령어 실행 결과를 비교하면 쉽게 이해할 수 있다.
(5) 특정 범위 내에서 단어 또는 문자 치환
# sed '30,40 s/version/story/g' myfile.txt
// myfile.txt 의 30~40라인 내에서 version단어를 story단어로 치환한다.
(11) 단어 치환 및 원본 파일 백업
10번까지의 예제 명령어들은 파일을 수정하고 원본파일을 저장하지 않았다. 파일을 수정하고 원본 파일은 따로 저장하려면 '-i 옵션'을 주면 된다.
# sed -i '.orig' 's/this/that/gi' myfile.txt
// myfile.txt 내의 this를 모두 that으로 변경한다. 이 때 변경하지 않은 원본 파일을 myfile.txt.orig로 저장한다.