본문 바로가기
컴퓨터 & IT (Computer & IT)/Linux

[Linux/sed] 빈 줄 제거하기

by Physics 2021. 7. 2.
728x90

sed 편집기를 이용하여 텍스트 파일의 빈 줄들을 제거하는 방법

0. 예제에서 사용할 파일

$ sed -n 'p' example.txt




apple apple apple apple apple


apple apple apple apple apple


apple apple apple apple apple

apple apple apple apple apple


MELON apple apple apple apple



1. 빈 줄 제거하기 

$ sed '/^$/d' example.txt

   a. d 명령(delete)을 사용해서 빈줄이 나타나는 줄을 삭제함 

 

$ sed '/^$/d' example.txt
apple apple apple apple apple
apple apple apple apple apple
apple apple apple apple apple
apple apple apple apple apple
MELON apple apple apple apple

  - 파일의 모든 빈 줄이 삭제됨 

2. 시작 부분의 빈 줄 지우기

$ sed '/./,$!d' example.txt

   a. 주소를 사용해서 sed 편집기가 처리할 부분을 할당 
     - /./ : 문자를 포함한 한 줄 
     - $: 데이터 스트림의 끝 
     - /./,$: 문자를 포함한 한 줄 (문자가 시작하는 첫번째 줄)부터 파일의 끝까지가 범위 
   b. !d: 주소 부분을 제외한 나머지를 삭제 
     - 즉, 문자가 시작하는 첫번째 줄 이하의 빈칸은 삭제된다. 

$ sed '/./,$!d' example.txt
apple apple apple apple apple


apple apple apple apple apple


apple apple apple apple apple

apple apple apple apple apple


MELON apple apple apple apple



    - 앞에 있던 빈줄은 삭제되었지만, 맨 뒤에 있는 빈 줄은 삭제되지 않음 

 

3. 끝에 있는 빈 줄을 삭제

$ sed '{
:start
/^\n*$/{$d; N; b start}
}' example_file

 

Example

$ sed '{
:start
/^\n*$/{$d; N; b start}
}' example.txt




apple apple apple apple apple


apple apple apple apple apple


apple apple apple apple apple

apple apple apple apple apple


MELON apple apple apple apple

  - 파일의 뒷 부분의 빈 줄만 삭제됨 

728x90

댓글