728x90
sed(Stream Editor)
sed 명령어는 홀드 버퍼(데이터 원본)와 패턴 버퍼(조건에 따라 가공된 데이터 저장)를 가지고 있다.
파일을 횡 단위로 구분하여 하나의 행을 가지고 온 뒤 원본 데이터를 저장하고 조건에 맞는 필터를 거쳐 패턴 버퍼에 저장한다.
옵션
option | 설명 |
-e | 조건식 스크립트를 직접 지정 |
-f | 조건식 스크립트가 기재된 파일을 지정 |
-n | 패턴이 일치하는 라인만 출력 |
-r | 확장 정규표현을 사용한 스크립트를 사용 |
-i | 수정한 내용으로 파일 덮어쓰기 |
플래그/커맨드
플래그/커맨드 | 설명 |
a\ | 현재 행에 하나 이상의 새로운 행 추가 |
c\ | 현재 행의 내용을 새로운 내용으로 교체 |
d | 행 삭제 |
i\ | 현재 행의 위에 텍스트 삽입 |
h | 패턴 스페이스의 내용을 홀드 스페이스에 복사 |
H | 패턴 스페이스의 내용을 홀드 스페이스에 추가 |
g | 홀드 스페이스의 내용을 패턴 스페이스에 덮어쓰기 |
G | 홀드 스페이스의 내용을 패턴 스페이스에 추가 |
l | 출력되지 않는 특수문자를 명확하게 출력 |
p | 행 출력 |
n | 다음 입력 행을 첫 번째 명령어가 아닌 다음 명령어에서 처리 |
q | sed 종료 |
r | 파일로부터 행 읽어오기 |
! | 선택된 행을 제외한 나머지 전체 행에 명령어 적용 |
s | 문자열 치환 |
치환 플래그
치환 플래그 | 설명 |
g | 치환이 행 전체에 대해 이뤄짐 |
p | 행 출력 |
w | 파일에 쓰기 |
x | 홀드 스페이스와 패턴 스페이스의 내용을 서로 맞바꾸기 |
y | 한 문자를 다른 문자로 변환 (정규표현식 메타문자 사용 불가능) |
사용 예시 1
sed '/[문자열]/d' [파일명] | [문자열]이 있는 행 삭제 후 출력 |
sed '/[문자열]/d' [파일명1] >> [파일명2] | [문자열]이 포함된 행 삭제 후, [파일명2]에 저장 |
sed 's/[문자열1]/ [문자열2]/g' [파일명] | 행에서 [문자열1]을 [문자열2]로 수정 후 출력 |
sed 's/[문자열1]\|[문자열2]/[문자열3]/g' [파일명] | [문자열1]과 [문자열2]를 [문자열3]으로 수정 후 출력 |
sed 's/[문자열1].*[문자열2]/[문자열3]/g' | [문자열1] ~ [문자열2] 사이의 내용을 [문자열3]으로 수정 후 출력 |
sed 's/\[.*\]//g' [파일명] | 대괄호([]) 사이 내용 모두 삭제 후 출력 |
sed '/^$/d' [파일명] | 빈 행 제거 |
sed '/^[[:space:]]*$/d' [파일명] | 공백(space bar)으로 이루어진 빈 행 제거 |
사용 예시 2
sed '[패턴]' [파일명]
-n : 특정 행만 출력('' 안에 행의 번호와 p옵션을 붙여 원하는 행만 출력 가능)
-i : 해당 패턴의 출력결과와 동일하게 원본 파일 수정
d : 해당 행 삭제
s : 바꾸고 싶은 행의 번호
sed -n '2p' [파일명] | 2번 행만 출력 |
sed -n '2,4p' [파일명] | 2~4번행 출력 |
sed -i -n '2,4p' [파일명] | 2~4번 행만 파일에 저장 |
sed '5d' [파일명] | 5번 행 삭제 |
sed '3,$d' [파일명] | 3번부터 끝행까지 모든 행 삭제 |
sed '2,4s/[문자열1]/[문자열2]/g' [파일명] | 2~4번 행 모두 [문자열1]을 [문자열2]으로 변경 |
sed 's/[문자열1]/[문자열2]/gI' [파일명] | 대소문자 구분 없이 [문자열1]을 [문자열2]로 치환 |
sed 's/\b[문자열1]\b/[문자열2]/g' [파일명] | [문자열1]과 완전히 일치하는 부분만 [문자열2]로 치환 |
두 가지 패턴을 동시 적용
sed -e [패턴] [파일명] -e [패턴] [파일명]
sed -n -e '1p' test -e '4p' test | test 파일에서 1번과 4번 행 동시 출력 |
두 가지 패턴을 순차적으로 적용
sed -n [패턴] [파일명] | sed -n [패턴]
sed -n '2,4p' test | sed -n '1p' | 2~4번 행 출력 후, (2~4번 행 출력된 것에서) 다시 1번 행 출력 |
참고
https://velog.io/@inhwa1025/Linux-SED-%EB%AA%85%EB%A0%B9%EC%96%B4-%EC%82%AC%EC%9A%A9%EB%B2%95
728x90
'OS > Linux' 카테고리의 다른 글
[Linux] ls 명령어 (0) | 2024.10.21 |
---|---|
[Linux] awk 명령어 (0) | 2024.10.18 |
[Linux] netstat 명령어 (0) | 2024.10.14 |
[Linux] more 명령어 (0) | 2024.10.11 |
[Linux] ps 명령어 (0) | 2024.10.09 |