sed를 사용하여 빈 줄을 남기지 않고 줄을 삭제하는 방법은 무엇입니까?

sed를 사용하여 빈 줄을 남기지 않고 줄을 삭제하는 방법은 무엇입니까?

파일.txt:

line: this-is-some-text
line2: this-is-some-other-text

예:

sed 's#line:.*##g' File.txt

line2: this-is-some-other-text

보시다시피 첫 번째 줄은 제거되었지만 빈 줄이 남아 있습니다.

sed삭제할 때 빈 줄이 남지 않도록 할 수 있습니까 ?

답변1

당신은 그것을 사용할 수 있습니다대신 elete 명령에스대체 명령:

$ cat File.txt 
line: this-is-some-text
line2: this-is-some-other-text

$ sed '/line:/d' File.txt
line2: this-is-some-other-text

표현식을 줄 시작 부분에 고정하는 것을 고려할 수 있습니다(예: ) sed '/^line:/d' File.txt.

또는 역방향 일치를 위해 grep을 고려하십시오 grep -v '^line:' File.txt.

답변2

awk를 사용하세요:

$ awk '/line:/{next}1'
$ awk '/^line:/{next}1' #For pattern at the start of line

편집 사용:

$ printf '%s\n' 'v/line:/p'  | ed -s file
$ printf '%s\n' 'v/^line:/p'  | ed -s file # For pattern at the start of line

관련 정보