여러 개의 빈 줄을 비어 있지 않은 특정 줄로 바꾸는 방법은 무엇입니까?

여러 개의 빈 줄을 비어 있지 않은 특정 줄로 바꾸는 방법은 무엇입니까?

샘플 입력은

1
2
3


4
5



6
7
8



9

예상 출력은 다음과 같습니다.

1
2
3
---
4
5
---
6
7
8
---
9

답변1

일방 통행:

cat -s file | sed 's/^$/---/'

고양이 매뉴얼 페이지에서:

   -s, --squeeze-blank
          never more than one single blank line

cat빈 줄을 짜낸 후 sed공백을 다음으로 교체하십시오.---

답변2

AWK의 여러 줄 로깅 기능(빈 RS)을 사용하는 POSIX 호환 방법:

awk 1 RS= ORS='\n---\n' file

끝에 있는 "---" 줄을 제외하면 원하는 것과 동일한 출력이 생성됩니다. 이 차이가 허용되지 않는 경우 sed 필터를 사용하여 제거할 수 있습니다.

... | sed '$d'

관련 정보