≡ Menu

Linux / Unix: sed Command Print Only Matching Lines

I see many examples and man pages on how to do operations like search-and-replace using sed. But, I want to match a given string or a regular pattern expression and display on the screen. How do I print lines with matching pattern using sed command only under Unix like operating systems?

Tutorial details
DifficultyEasy (rss)
Root privilegesNo
Estimated completion timeN/A

Sed is a stream editor for Unix like operating systems. It can perform basic text transformations on:

  • An input stream.
  • A file (regular text file).
  • Input from a pipeline (command1 | sed -e 'expr1' | command2).

Sed printing syntax and examples

Use the following syntax:

sed '/word/p' input
sed '/regexp/p' input
sed -n '/regex/p' /path/to/file
sed -n '/regexp/p' /path/to/file | less
sed -n -e '/regexp/p' input > output
## gnu/sed - update file with -i option ###
sed -i -n -e '/regexp/p' input

In this example print or show any matching lines from /etc/passwd file:

sed -n '/root/p' /etc/passwd

Sample outputs:


The -n option asks sed to not display the regex or patten unless explicitly asked to do so. Try removing -n option and you will understand the difference:

sed '/root/p' /etc/passwd

You can print lines using line addresses. In this example print second line:

sed '2p' /etc/passwd

The 'p' command is preceded by a '2'. The number '2' refers to line number two. You can tell sed to perform prints only on a particular line or lines. In this example print 1 to 5 lines:

sed '1,5p' /etc/passwd

The 'p' command is preceded by line rage address 1,5 (separated by a comma). You can also print using two regexps and the syntax is:

sed -n -e '/WORD-1/,/WORD-2/p' input.file
sed -n -e '/regexpA/,/regexpB/p' input.file

In this example, print a block of data that starts with a line containing "BROWN", and ending with a line that contains "GREEN":

sed -n -e '/BROWN/,/GREEN/p' colours.txt

The following example will print section of file from a line contcontaining "GREEN" to end of file:

sed -n '/GREEN/,$p' colours.txt
Recommened readings
Tweet itFacebook itGoogle+ itPDF itFound an error/typo on this page?

{ 2 comments… add one }

  • chandan May 14, 2015, 9:49 am

    I am searching print a line number when specific word found.Could you please help me?

    • Peter J Nelson July 15, 2015, 6:19 pm


      use “grep -n ” to print line numbers with matches. Add a “-i” option to ignore case.

Leave a Comment