sed

배병진·2023년 5월 31일
0

Linux

목록 보기
17/17

SED(Stream Editor)

  • 원본 텍스트 파일을 편집하는 명령어
  • SED는 홀드 버퍼와 패턴 버퍼를 이용하여 홀드 버퍼에는 데이터의 원본을, 패턴 버퍼에는 조건에 맞는 내용이 저장된다.

VI Editor와의 차이

  • 편집기를 직접 열어 고치지 않고 커맨드창에서 원하는 부분만 수정이 가능하고, vi Editor는 실시간 편집기인 반면 SED는 그렇지 않다.
    SED는 원본을 건드리지 않고 편집하여 원본에는 영향이 없다.

주의할 점

  • 특수문자 앞에 \ 표시를 해주어야 한다.

SED 사용법
sed -[option][file name]

Command설명
-e왼쪽으로 커서 이동
-f조건식 스크립트가 기재된 파일을 지정
-n패턴이 일치하는 라인만 출력
-r확장 정규표현을 사용한 스크립트를 사용
-i수정한 내용으로 파일 덮어쓰기

SUB
Command | 설명
|:----:|:----:|
a\ |현재 행에 하나 이상의 새로운 행 추가
c\ |현재 행의 내용을 새로운 내용으로 교체
i\ |현재 행의 위에 텍스트 삽입
d |행 삭제
p |행 출력
q | sed종료
r | 파일로부터 행 읽어 오기
s | 문자열 치환
! | 선택된 행을 제외한 나머지 전체 행에 명령어 적용
l | 출력되지 않는 특수문자를 출력

치환 플래그(s랑 같이 사용)

Command설명
g치환이 행 전체에 대해 이루어짐
p행 출력
w파일에 쓰기
x홀드 스페이스와 패턴 스페이스의 내용 바꿈
y한 문자를 다른 문자로 변경

메타

Command설명
^치환이 행 전체에 대해 이루어짐
$행 출력
.파일에 쓰기
*홀드 스페이스와 패턴 스페이스의 내용 바꿈
OR
{5}직전의 문자가 5번만 나옴
{5~10}직전의 문자가 5~10번만 나옴

SED 이용법

# sed '/^$/d' test01
>> test01에 공백 제거

# sed 'a\\' test01
>> test01의 모든 줄마다 공백 추가

# sed '/^#/d' test01
>> test01에 주석 처리되어있는 줄 삭제

# sed -n '10,$p' test01
>> test01에 10번째 부터 끝까지 출력

# sed '5,10d' test01 > test02
>> test01의 5~10번째 행 삭제 후 test02로 저장

# sed -e 's/google/코리아/g' test01
>> test01파일에 있는 모든 google 문자를 코리아로 치환

# sed -i '$a구글코리아' test01
>> test01파일에 마지막 구글코리아를 추가하고 원본 덮어쓰기

# sed -e 's/<tab>/<space>g' test01
>> test01파일에서 탭을 스페이스로 변환

#  sed -e 's/<space>/<tab>g' test01
>> test01파일에서 스페이스를 탭으로 변환
profile
history and study

0개의 댓글