본문 바로가기

리눅스

리눅스 sed 명령어를 이용한 파일 수정 (sed command)

반응형

안녕하세요. 교육이입니다.^^

 

오늘은 리눅스의 sed 명령어로,

파일의 내용을 수정하는 방법을 알아볼게요.

vi 에디터에서 할 수 있는 작업이지만…

수정하려는 파일이 아주 클 경우에는 vi에디터로 파일을 열 때도 아주 오랜 시간이 걸리기 때문에 sed를 사용하면 파일을 열지 않고 수정할 수 있어서 작업 시간이 단축되요.

 

① 기본 사용방법

$ cat 파일명 | sed 조건

저는 sed 명령어를 cat 명령어로 파일에서 입력을 받고,

파일의 정보를 수정해요.

 

 

② 특정 행 출력

cat ori.txt

제가 준비한 파일은 단백질 구조를 담고 있는 파일의 일부예요.

 

$ cat ori.txt | sed -n 3p
$ cat ori.txt | sed -n 3,7p

-n와 p를 이용해서 3행만 출력하거나, 3~7행을 출력하는 방법이예요.

 

$ cat ori.txt | sed -n '3p;5p;7p'

-n과 p로 선택한 행만 출력할 수 있어요.

 

$ cat ori.txt | sed -n '/LEU/p'

-n과 p로 특정 문자열이 포함된 열을 출력할 수 있어요.

 

 

③ 특정 행 제거

$ cat ori.txt | sed 3d
$ cat ori.txt | sed 3,7d
$ cat ori.txt | sed '3d;7d'

d를 사용하면 선택한 행을 지우고 출력할 수 있어요.

 

$ cat ori.txt | sed '/LEU/d'

d를 사용하면 특정 문자열이 포함된 행을 제외하고 출력이 가능해요.

 

 

④ 문자열 치환(substitute)

$ cat ori.txt | sed '1,$ s/HIS/TTT/'

sed 조건란에 위와 같이 입력하면 HIS를 TTT로 변환합니다.

1,$는 첫번째 행부터 마지막 행까지 모두 수행하는 것으로 없어도 결과는 같아요.

만약, 특정한 행에 대해 수행하고 싶으면 1,$ 대신 3,7로 수정하면 3~7행에 대해서 적용이 돼요.

 

$ cat ori.txt | sed '1,$ s/0/T/'
$ cat ori.txt | sed '1,$ s/0/T/g'

치환을 할 때, 각 행의 첫번째 문자열만 치환을 하게 되는데,

행의 모든 문자열을 치환하고 싶으면 조건의 마지막에 g를 추가해요.

 

 

⑤ 문자열 제거

$ cat ori.txt | sed '1,$ s/LEU//g'
$ cat ori.txt | sed '1,$ s/LEU/   /g'

치환을 응용하면 문자열을 없앨 수 있어요.

치환할 자리에 띄어쓰기를 하면 공백이 생겨요.

 

$ cat ori.txt | sed '1,$ s/..//'
$ cat ori.txt | sed '1,$ s/…$//'

처음 문자 또는 마지막 문자를 ‘.’의 개수에 따라 제거할 수 있어요.

 

$ cat ori.txt | sed '1,$ s/\./TT/g'

기호 ‘.’을 치환하려면 역슬래시 \를 ‘.’ 앞에 사용해요.

 

 

이상으로, sed 명령어를 사용하는 몇가지 방법을 알아봤어요.

 

오늘도 즐거운 하루 되세요~ ^^

반응형