sed - remove nul lines from file

Yuri Pankov yuripv at
Tue Nov 7 18:28:36 UTC 2017

On Tue, 7 Nov 2017 21:20:40 +0300, Yuri Pankov wrote:
> On Tue, 7 Nov 2017 13:14:08 -0500, James B  Byrne Via Freebsd-questions
> wrote:
>> On Tue, November 7, 2017 13:03, Yuri Pankov wrote:
>>> You want /d, not /g, to delete the *lines* which contain NUL symbols
>>> (that's what your subject line said).
>> Sigh.  Thank you.  That works.  However, it also deletes any line that
>> has even one NUL in it regardless of the presence of other non-nul
>> characters on the line.
>> What I wish to accomplish is to delete only the lines that are
>> completely nul.  I thought that this could be accomplished by
>> prefacing the match sting with the start of line anchor ^ and ending
>> it with the end of line anchor $ but this does not work as I expect.
> "[[.NUL.]]" is just a character specified by its collation name, so
> treat as any other ordinary character:
> sed -E '/^[[.NUL.]]+$/d' INFILE > OUTFILE
> Need extended regexp here for '+' to work.

Or, after looking at re_format(7), it could be written using BREs, your 
choice :-)

sed '/^[[.NUL.]]\{1,\}$/d'

More information about the freebsd-questions mailing list