Naxi
Naxi

Reputation: 2026

What is the significance of -n parameter passed to sed command?

Can someone please tell me how does sed -n '1!p work ? Below is the full command which I am using to sort my pods in k8s based on nodes they are assigned.

kubectl get pods -o wide --all-namespaces|sort -k8 -r| sed -n '1!p'

The above command works perfectly and the sed part removes the first header line from the final output.

I want to understand how does the sed part work and what's the significance of the parameters passed to sed?

Upvotes: 2

Views: 739

Answers (2)

John Goofy
John Goofy

Reputation: 1419

From info sed:

-n: By default, 'sed' prints out the pattern space at the end of each cycle through the script (*note How 'sed' works: Execution Cycle.). These options disable this automatic printing, and 'sed' only produces output when explicitly told to via the 'p' command.

1p: print first line

1!p: do not print first line.

Upvotes: 2

zessx
zessx

Reputation: 68810

By default, sed will output every line it parses.
-n option is there to hide this output, and display only the lines specified with the p option.

In your exemple, sed -n '1!p' means "Display every line but first".


A more understandable example is when you want to search/replace with sed. If you want to see the whole resulting file you'll use this:

sed 's/from/to/g' file.txt

But if you only want to see which lines have been changed, use this:

sed -n 's/from/to/gp' file.txt

Upvotes: 1

Related Questions