How to Display Specific Lines of a File in Linux Command Line
Here are several ways to display specific lines of a file in Linux command line.
β Abhishek Prakash
How do I find the nth line in a file in Linux command line? How do I display line number x to line number y?
In Linux, there are several ways to achieve the same result. Printing specific lines from a file is no exception.
To display the 13th line, you can use a combination of head and tail:
head -13 file_name | tail +13
Or, you can use the sed command:
sed -n '13p' file.txt
To display line numbers from 20 to 25, you can combine head and tail commands like this:
head -25 file_name | tail +20
Or, you can use the sed command like this:
sed -n '20,25p' lines.txt
A detailed explanation of each command follows next. I'll also show the use of the awk command for this purpose.
Display specific lines using head and tail commands
This is my favorite way of displaying lines of choice. I find it easier to remember and use.
Print a single specific line
Both head and tails commands are used to display the contents of a file in the terminal.
Use a combination of head and tail command in the following function the line number x:
head -x file_name | tail +x
You can replace x with the line number you want to display. So, let's say you want to display the 13th line of the file.
abhishek@handbook:~$ head -13 lines.txt | tail +13
This is line number 13
Explanation: You probably already know that the head command gets the lines of a file from the start while the tail command gets the lines from the end.
The βhead -xβ part of the command will get the first x lines of the files. It will then redirect this output to the tail command. The tail command will display all the lines starting from line number x.
Quite obviously, if you take 13 lines from the top, the lines starting from number 13 to the end will be the 13th line. Thatβs the logic behind this command.
Print specific range of lines
Now let's take our combination of head and tail commands to display more than one line.
Say you want to display all the lines from x to y. This includes the xth and yth lines also:
head -y lines.txt | tail +x
Let's take a practical example. Suppose you want to print all the the lines from line number 20 to 25:
abhishek@handbook:~$ head -25 lines.txt | tail +20
This is line number 20
This is line number 21
This is line number 22
This is line number 23
This is line number 24
This is line number 25
Use SED to display specific lines
The powerful sed command provides several ways of printing specific lines.
For example, to display the 10th line, you can use sed in the following manner:
sed -n '10p' file.txt
The -n suppresses the output while the p command prints specific lines. Read this detailed SED guide to learn and understand it in detail.
To display all the lines from line number x to line number y, use this:
abhishek@handbook:~$ sed -n '3,7p' lines.txt
This is line number 3
This is line number 4
This is line number 5
This is line number 6
This is line number 7
Use AWK to print specific lines from a file
The awk command could seem complicated and there is surely a learning curve involved. But like sed, awk is also quite powerful when it comes to editing and manipulating file contents.
abhishek@handbook:~$ awk 'NR==5' lines.txt
This is line number 5
NR denotes the 'current record number'. Please read our detailed AWK command guide for more information.
To display all the lines from x to y, you can use awk command in the following manner:
abhishek@handbook:~$ awk 'NR>=20 && NR<=25' lines.txt
This is line number 20
This is line number 21
This is line number 22
This is line number 23
This is line number 24
This is line number 25
It follows a syntax that is similar to most programming languages.
I hope this quick article helped you in displaying specific lines of a file in Linux command line. If you know some other trick for this purpose, do share it with the rest of us in the comment section.
Creator of Linux Handbook and It's FOSS. An ardent Linux user & open source promoter. Huge fan of classic detective mysteries from Agatha Christie and Sherlock Holmes to Columbo & Ellery Queen.