첫 번째 빈 줄만 삭제 sed

첫 번째 빈 줄만 삭제 sed

여기에 비슷한 질문이 있지만 그 중 어느 것도 내 문제와 정확히 일치하지 않습니다.

sed를 사용하여 파일의 첫 번째 빈 줄만 삭제하는 방법은 무엇입니까?

내가 가지고 있다고 가정하자

a

b

c

그리고 나는 원한다

a
b

c

출력으로.

답변1

sedFAQ 보기여기:

$ sed '0,/^$/{//d}' lines
a
b

c

d

사용할 공백이 있는 줄을 고려하려는 경우 실제로 빈 줄만 제거됩니다.

$ sed '0,/^[[:space:]]*$/{//d}' lines

대신에.

답변2

sed다음을 사용하여 첫 번째 빈 줄을 읽은 다음 다음 cat을 사용하여 나머지 줄을 읽을 수 있습니다 . 이는 대용량 파일에 가장 효율적입니다.

{ sed -n '/./!q;p'; cat; } < the-file

그러나 일반 파일에서만 작동합니다(파이프에서는 작동하지 않습니다. 데이터를 청크로 읽으며 입력을 검색할 수 없으면 sed호출 다음 줄을 찾을 수 없기 때문입니다). q@peterph가 지적했듯이 GNU sed버전 4.2.2 이상 에서는 -uGNU가 한 번에 한 바이트씩 입력을 읽고(한 번에 한 줄씩 출력하도록) 플래그를 추가 sed하고 파이프 문제를 제거할 수 있습니다(성능이 저하되더라도). 성능).

관련 정보