sed에서 연속된 빈 줄을 단일 빈 줄로 바꾸는 방법은 무엇입니까?

sed에서 연속된 빈 줄을 단일 빈 줄로 바꾸는 방법은 무엇입니까?

나는 연속적인 빈 줄(더 명확하게 말하면 빈 줄만)을 갖고 싶어하는 파일을 가지고 있습니다. 모두 하나로 교체하고 싶습니다.

차라리 sed(IMHO 이 작업은 awk사소한 일입니다).

답변1

연속된 빈 줄(0개의 문자 줄)을 압축하려면 다음을 사용할 수 있습니다.N;P;D cycle:

sed '$!N;/^\n$/!P;D' infile

연속된 빈 줄을 압축하려면 가능한 공백을 고려하여 정규식을 변경하세요.

sed '$!N;/^[[:blank:]]*\n[[:blank:]]*$/!P;D' infile

답변2

당신이 가지고 있다면암소 비슷한 일종의 영양 sed사용할 수 있는 경우(스크립트와 충돌하지 않음) -z0으로 구분된 줄 플래그를 사용한 다음 다음과 같이 더 간단한 정규식을 사용할 수 있습니다.

sed -z 's/\n[\n ]*/\n/g' infile

이는-z아니요POSIX.

관련 정보