A text file contains several blank lines. Which command numbers only the non-empty lines by default?

LPIC-1 Exam 101-500, objective 103. GNU and Unix commands medium

Draft — not checked yet. This question was written from the published exam objectives and cites the clause it comes from, but nobody has yet read it against that clause and signed for it.

It is kept out of search results and out of mock exams until they have. Read the source below before you take the answer as settled.

The options

Not correct od -c file

Wrong. od dumps the file's bytes; -c shows them as characters with escapes. It is for inspecting binary or invisible content, not for numbering lines.

Not correct cat -n file

Wrong. cat -n numbers every line including the empty ones. It is `cat -b` that numbers only non-blank lines, which matches nl's default.

Not correct wc -l file

Wrong. wc -l does not print the file at all; it prints how many lines the file has.

Correct nl file

Correct. nl's default body numbering style is 't': lines with content are numbered, empty lines are printed without a number.

Why

nl is a line-numbering filter with configurable numbering styles (-b a numbers all lines, -b t only non-empty ones, which is the default). cat -n is the quick equivalent that numbers everything, and cat -b skips blanks. Knowing which of the two numbers blank lines is exactly the sort of distinction this objective tests.

Where this comes from

Cited
LPI exam objective 103.2
What it says
Number the lines of a text stream with nl or cat.

Practise this

Reading one question is not practice. The trainer will draw a set from objective 103 and space the ones you get wrong.

Practise LPIC-1 Exam 101-500