2020년 9월 2일 수요일

[SED] 간단한 sed의 활용법

부끄러운 고백이지만 항상 sed를 대충 사용해 왔었다. 어제 Eric Pement의 sed1line.txt에 고무되어 나 자신의 이해를 돕기 위한 간단한 자료를 만들어 보았다. 복잡한 치환 등의 기능은 담지 않았다. '처음부터 패턴이 있는 줄까지만 출력하려면 어떻게 해야 되는가?' 등의 질문에 대한 답은 될 것이다. vi 명령어로 텍스트 파일을 열어서 경계가 되는 줄까지 이동하여 dG 명령을 날려도 되지만, 파일을 일일이 열지 않고도 좀 더 세련된 방법으로 처리를 하고 싶었다.

이 페이지에 작성한 사례를 더욱 확충해 나갈 생각은 없다. 만약 그러한 순간이 온다면 sed1line.txt를 참조하면 될 일이다.

$ cat file
one
two
three
four
five

$ sed 'p' file
one
one
two
two
three
three
four
four
five
five

# -n 옵션이 필요한 이유
$ sed -n 'p' file
one
two
three
four
five

# 라인 범위를 지정하여 출력
$ sed -n '1,3p' file
one
two
three
$ sed -n '2,$p' file
two
three
four
five

# 특정 패턴이 있는 라인을 출력
$ sed -n '/four/p' file
four
$ sed -n '/^f/p' file
four
five
$ sed '/four/!d' file
four

# 첫 줄부터 패턴이 있는 줄까지 출력
$ sed '/four/q' file  
one
two
three
four

# 첫 줄부터 패턴이 있는 줄의 직전까지 출력
$ sed -n '/four/q;p' file
one
two
three

# 패턴이 있는 줄만 빼고 출력
$ sed '/two/d' file
one
three
four
five

# 패턴이 있는 줄부터 끝까지 출력
$ sed -n '/three/,$p' file
three
four
five

# 패턴이 있는 줄의 다음부터 끝까지 출력
$ sed '1,/three/d' file
four
five

댓글 없음: