텍스트 시작 부분부터 첫 번째 빈 줄까지 내용을 삭제하려고 합니다.
--($:~)-- cat example.txt
pedro
pablo
juan
francisco
emiliano
martin
따라서 다음을 제거하겠습니다.
pedro
pablo
juan
나는 이전에 시도했습니다:
sed -n '/^/,/^$/ d' example.txt
하지만 작동하지 않습니다.
답변1
넌 할 수있어
sed -n '/^$/{:l; p; n; b l}' file
정상적인 출력을 억제합니다 -n
. 패턴과 일치하는 첫 번째 빈 줄에 도달하면 /^$/
루프를 시작하여 모든 후속 줄을 인쇄합니다.
답변2
그리고 sed
:
sed -n '/^$/,$p' file
또는:
sed -e '/^$/,$!d' file
그리고 awk
:
awk '/^$/{p++};p' file
답변3
가장 가까운 것 ksh
(필요 ksh93s
하거나 그 이상)을 사용하면 다음을 수행할 수 있습니다.
cat <example.txt <#""
답변4
sed -e 1,/^$/c\\ -e '' <infile >outfile
...그것도 작동합니다.
1,/^$/d
~와 함께c\
<EOF>
이 명령은 주소 범위를 정확하게 제거하지 않고 d
대신 c
전체 블록을 단일 문자열로 일시 중지합니다. 따라서 이것은 출력에서 첫 번째 빈 줄을 제거하지 않습니다. c
입력에서 전체 텍스트 블록이 처음 나타나는 부분에 걸리기 때문입니다.(빈 줄의 첫 번째 발생으로 구분됨)빈 줄에.