728x90
반응형

리눅스에서 하나의 문자열을 찾고 다음 문자열까지 출력하고 싶은데
데이터가 복잡하게 엮여있어 쉽지 않아서 찾아보니 sed 명령어를 통해서 원하는 값을 뽑을 수 있었다.

 

리눅스 sed 명령어를 사용해

1. 특정 문자가 포함된 라인 출력
2. 특정 문자가 포함된 라인부터 끝가지 출력
3. 특정 문자가 포함된 라인부터 다른 특정 문자가 포함된 라인까지 출력

할 수 있다.

 

우선 예를 들기 위해서 텍스트 파일 하나를 만들었다.

# cat sed.txt
Apple
Pear
Melon
Kiwi
Banana
Carrot
Durian
Egg

대충 만든 텍스트 파일을 가지고 놀기ㅎㅎ

 


특정 문자가 포함된 라인 출력하기

Melon이 포함된 라인을 출력하고 싶을 때 !

# sed -n '/Melon/p' sed.txt
Melon

n 옵션을 통해 Melon 이라는 문자열이 포함된 라인을 찾고 p 옵션을 통해 출력해준다.
주로 n 옵션과 p 옵션을 같이 사용한다.


특정 문자가 포함된 라인부터 끝까지 출력하기

Melon 이 포함된 라인부터 끝까지 출력하고 싶을 때 !

sed -n '/Melon/,$p' sed.txt
Melon
Kiwi
Banana
Carrot
Durian
Egg

n 옵션을 통해서 Melon 이 포함된 라인을 찾고
,(콤마) 를 통해서 범위를 지정해줄 수 있는데 ,(콤마) 다음에 $ 라는 문자를 써주었다.
여기서 $행의 끝을 의미한다고 한다.
따라서, Melon 이 포함된 라인부터 끝까지 출력해준다.

 

어 그럼, 단락이 있을 경우 어디까지 출력이 되는지 궁금해서 확인해봤다.
아까 대충 만든 텍스트 파일을 복사해서 단락을 나누고 몇 줄 더 추가했다.

# cat sed_add.txt 
Apple
Pear
Melon
Kiwi
Banana
Carrot
Durian
Egg

Rice
Stew
Kimchi
Water

 

이제 다시 Melon 부터 $ 를 사용해서 행의 끝까지 출력해본다.

# sed -n '/Melon/,$p' sed_add.txt
Melon
Kiwi
Banana
Carrot
Durian
Egg

Rice
Stew
Kimchi
Water

확인해보니 단락 구분없이 출력되었다.
$ 는 텍스트 파일의 끝을 의미한다고 보면 될 것 같다.

 

아, 그리고 만약 php 와 같은 언어에서는 $ 를 변수로 인식하기 때문에
\$ 이렇게 앞에 역슬레쉬를 붙여줘야한다!


특정 문자가 포함된 라인부터 출력하기

Melon 이 포함된 라인부터 바나나가 포함된 라인까지 출력하고 싶을 때 !

# sed -n '/Melon/,/Banana/p' sed.txt
Melon
Kiwi
Banana

아까 말했듯이 ,(콤마) 를 통해서 범위를 지정해줄 수 있는데
Melon 이라는 문자부터 Banana 라는 문자까지 범위를 지정해줬다.
그래서 Melon이 포함된 라인부터 Banana 가 포함된 라인까지 출력되었다.


이번에는 sed 명령어를 사용해서 데이터에서 원하는 값을 뽑아봤는데
sed 명령어 말고도 다른 명령어를 사용해서 다양한 방법으로 원하는 값을 뽑을 수 있다는 점 ❗️

728x90
반응형

'리눅스 > Command' 카테고리의 다른 글

리눅스 free 명령어  (0) 2021.12.25
리눅스 grep 명령어  (0) 2021.06.08
리눅스 find 명령어  (0) 2020.12.13
리눅스 uniq 명령어  (0) 2020.11.09
리눅스 sort 명령어  (2) 2020.11.04
복사했습니다!